From 00410ba99f55f317eae188aebe3af40a6b43f71d Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 13 Sep 2017 12:36:43 +1200 Subject: [PATCH] ldb_tdb: Add UNIQUE_INDEX as a possible flag This allows easy testing of our unique index code and behaivour from python Signed-off-by: Andrew Bartlett Reviewed-by: Garming Sam --- lib/ldb/ldb_tdb/ldb_cache.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/ldb/ldb_tdb/ldb_cache.c b/lib/ldb/ldb_tdb/ldb_cache.c index 5347a3be13ba..5b90bd99f479 100644 --- a/lib/ldb/ldb_tdb/ldb_cache.c +++ b/lib/ldb/ldb_tdb/ldb_cache.c @@ -36,6 +36,7 @@ #define LTDB_FLAG_CASE_INSENSITIVE (1<<0) #define LTDB_FLAG_INTEGER (1<<1) +#define LTDB_FLAG_UNIQUE_INDEX (1<<2) /* valid attribute flags */ static const struct { @@ -45,6 +46,7 @@ static const struct { { "CASE_INSENSITIVE", LTDB_FLAG_CASE_INSENSITIVE }, { "INTEGER", LTDB_FLAG_INTEGER }, { "HIDDEN", 0 }, + { "UNIQUE_INDEX", LTDB_FLAG_UNIQUE_INDEX}, { "NONE", 0 }, { NULL, 0 } }; @@ -149,7 +151,7 @@ static int ltdb_attributes_load(struct ldb_module *module) /* mapping these flags onto ldap 'syntaxes' isn't strictly correct, but its close enough for now */ for (i=0;inum_elements;i++) { - unsigned flags, attr_flags; + unsigned flags = 0, attr_flags = 0; const char *syntax; const struct ldb_schema_syntax *s; const struct ldb_schema_attribute *a = @@ -167,6 +169,11 @@ static int ltdb_attributes_load(struct ldb_module *module) goto failed; } + if (flags & LTDB_FLAG_UNIQUE_INDEX) { + attr_flags = LDB_ATTR_FLAG_UNIQUE_INDEX; + } + flags &= ~LTDB_FLAG_UNIQUE_INDEX; + /* These are not currently flags, each is exclusive */ if (flags == LTDB_FLAG_CASE_INSENSITIVE) { syntax = LDB_SYNTAX_DIRECTORY_STRING; @@ -191,7 +198,7 @@ static int ltdb_attributes_load(struct ldb_module *module) goto failed; } - attr_flags = LDB_ATTR_FLAG_ALLOCATED | LDB_ATTR_FLAG_FROM_DB; + attr_flags |= LDB_ATTR_FLAG_ALLOCATED | LDB_ATTR_FLAG_FROM_DB; r = ldb_schema_attribute_fill_with_syntax(ldb, attrs, -- 2.34.1