From 8818f2c507e717fa4d38336a5a47a35ac21771d8 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 27 Jul 2016 11:21:43 +1200 Subject: [PATCH] ldb: Use ldb_unpack_data_only_attr_list_flags in re_index() This avoids allocation of every value during a re-index scan Signed-off-by: Andrew Bartlett Reviewed-by: Douglas Bagnall --- lib/ldb/ldb_tdb/ldb_index.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lib/ldb/ldb_tdb/ldb_index.c b/lib/ldb/ldb_tdb/ldb_index.c index d29662305b2..392b4a71d6c 100644 --- a/lib/ldb/ldb_tdb/ldb_index.c +++ b/lib/ldb/ldb_tdb/ldb_index.c @@ -1534,6 +1534,7 @@ static int re_index(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data, void * struct ltdb_reindex_context *ctx = (struct ltdb_reindex_context *)state; struct ldb_module *module = ctx->module; struct ldb_message *msg; + unsigned int nb_elements_in_db; const struct ldb_val val = { .data = data.dptr, .length = data.dsize, @@ -1554,7 +1555,11 @@ static int re_index(struct tdb_context *tdb, TDB_DATA key, TDB_DATA data, void * return -1; } - ret = ldb_unpack_data(ldb, &val, msg); + ret = ldb_unpack_data_only_attr_list_flags(ldb, &val, + msg, + NULL, 0, + LDB_UNPACK_DATA_FLAG_NO_DATA_ALLOC, + &nb_elements_in_db); if (ret != 0) { ldb_debug(ldb, LDB_DEBUG_ERROR, "Invalid data for index %s\n", ldb_dn_get_linearized(msg->dn)); -- 2.34.1