From: Jakob E. <jab...@gm...> - 2011-03-07 20:08:16
|
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 | |