diff options
author | Andrew Tridgell <tridge@samba.org> | 2009-04-02 16:42:21 +1100 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2009-04-02 16:42:21 +1100 |
commit | 9539e2b508b3340b49575e5022c365ec382b2097 (patch) | |
tree | 57f28e0743b527bcb28fad2a79863e47be9b1416 /source4/dsdb/schema/schema.h | |
parent | 1bc9c3923574d548810733b512716d5758814328 (diff) | |
download | samba-9539e2b508b3340b49575e5022c365ec382b2097.tar.gz |
major upgrade to the ldb attribute handling
This is all working towards supporting the full WSPP schema without a
major performance penalty.
We now use binary searches when looking up classes and attributes. We
also avoid the loop loading the attributes into ldb, by adding a hook
to override the ldb attribute search function in a module. The
attributes can thus be loaded once, and then saved as part of the
global schema.
Also added support for a few more key attribute syntaxes, as needed
for the full schema.
Diffstat (limited to 'source4/dsdb/schema/schema.h')
-rw-r--r-- | source4/dsdb/schema/schema.h | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/source4/dsdb/schema/schema.h b/source4/dsdb/schema/schema.h index f7d59a7c393..98ccf5ed9e1 100644 --- a/source4/dsdb/schema/schema.h +++ b/source4/dsdb/schema/schema.h @@ -91,6 +91,7 @@ struct dsdb_attribute { /* internal stuff */ const struct dsdb_syntax *syntax; + const struct ldb_schema_attribute *ldb_schema_attribute; }; struct dsdb_class { @@ -156,6 +157,21 @@ struct dsdb_schema { struct dsdb_attribute *attributes; struct dsdb_class *classes; + /* lists of classes sorted by various attributes, for faster + access */ + uint32_t num_classes; + struct dsdb_class **classes_by_lDAPDisplayName; + struct dsdb_class **classes_by_governsID_id; + struct dsdb_class **classes_by_governsID_oid; + struct dsdb_class **classes_by_cn; + + /* lists of attributes sorted by various fields */ + uint32_t num_attributes; + struct dsdb_attribute **attributes_by_lDAPDisplayName; + struct dsdb_attribute **attributes_by_attributeID_id; + struct dsdb_attribute **attributes_by_attributeID_oid; + struct dsdb_attribute **attributes_by_linkID; + struct { bool we_are_master; struct ldb_dn *master_dn; |