Use 'Flags' field in MSysObjects to recognize system tables

This commit is contained in:
whydoubt
2004-09-16 04:00:39 +00:00
parent d5f91ebe63
commit dd99bd0a68
16 changed files with 109 additions and 138 deletions

View File

@@ -65,6 +65,7 @@ GPtrArray *mdb_read_catalog (MdbHandle *mdb, int objtype)
char obj_id[256];
char obj_name[256];
char obj_type[256];
char obj_flags[256];
int type;
if (mdb->catalog) mdb_free_catalog(mdb);
@@ -88,6 +89,7 @@ GPtrArray *mdb_read_catalog (MdbHandle *mdb, int objtype)
mdb_bind_column_by_name(table, "Id", obj_id);
mdb_bind_column_by_name(table, "Name", obj_name);
mdb_bind_column_by_name(table, "Type", obj_type);
mdb_bind_column_by_name(table, "Flags", obj_flags);
mdb_rewind_table(table);
@@ -101,6 +103,7 @@ GPtrArray *mdb_read_catalog (MdbHandle *mdb, int objtype)
strcpy(entry->object_name, obj_name);
entry->object_type = (type & 0x7F);
entry->table_pg = atol(obj_id) & 0x00FFFFFF;
entry->flags = atol(obj_flags);
mdb->num_catalog++;
g_ptr_array_add(mdb->catalog, entry);
}

View File

@@ -355,3 +355,14 @@ guint32 pgnum;
printf("\n");
}
}
int mdb_is_user_table(MdbCatalogEntry *entry)
{
return ((entry->object_type == MDB_TABLE)
&& !(entry->flags & 0x80000002)) ? 1 : 0;
}
int mdb_is_system_table(MdbCatalogEntry *entry)
{
return ((entry->object_type == MDB_TABLE)
&& (entry->flags & 0x80000002)) ? 1 : 0;
}