Re: Proposed changes to HACKING doc

Jakob Egger <[email protected]> Mon, 7 Mar 2011 21:07:58 +0100
Newsgroups gmane.comp.db.mdb-tools.devel
Message-ID <[email protected]>
My dear fellow hackers,

I found out some more information about the column flags byte.

The special columns used for replication all have the bit 0x10 set. I haven't seen this bit on any other columns. Maybe this marks the column as hidden, or as replication-related. These columns start with "s_" or "Gen_" (the "Gen_" fields are for memo fields)

In Access 2007 and Access 2010, "Complex Columns" (multivalued fields, version history, attachments) always have the flag byte set to exactly 0x07

Hyperlinks (basically memo fields with a special syntax) have the 0x80 bit set. The hyperlinks seem to have the following syntax:
"Link Title#http://example.com/somepage.html#" or "#PAGE.HTM#" (see the old NWind.mdb sample database)

Thus, as far as I know, the known bits of the column bitmask are:
0x01: variable length column
0x02: can be null
0x04: is auto long
0x10: replication related field (or hidden?)
0x40: is auto guid
0x80: hyperlink

I haven't seen the other bits anywhere yet


Best regards,
Jakob Egger



On 28.02.2011, at 09:25, dw wrote:
> 4) From table.c we see that:
>         pcol->is_long_auto = col[fmt->col_flags_offset] & 0x04 ? 1 : 0;
> 	pcol->is_uuid_auto = col[fmt->col_flags_offset] & 0x40 ? 1 : 0;
> My own observations suggest bit 2 indicates whether the column can be null.  
> 
> Thus, the known bits of the column bitmask are:
> 0x01: variable length column
> 0x02: can be null
> 0x04: is auto long
> 0x40: is auto guid
> So, this line from HACKING is insufficient:
> | ???? | 1 byte  | bitmask     | low order bit indicates variable columns |


------------------------------------------------------------------------------
What You Don't Know About Data Connectivity CAN Hurt You
This paper provides an overview of data connectivity, details
its effect on application quality, and explores various alternative
solutions. http://p.sf.net/sfu/progress-d2d