mirror of
https://github.com/samba-team/samba.git
synced 2024-12-24 21:34:56 +03:00
use transactions in ldbadd, ldbmodify and ldbedit
The command line tools ldbadd, ldbmodify and ldbedit should operate within a transaction to make them more efficient. The ldbadd tool in particular is much faster when adding a large number of records if all the adds happen within a transaction. Previously there was a transaction per record.
This commit is contained in:
parent
936d76802f
commit
f320e3a659
@ -92,6 +92,11 @@ int main(int argc, const char **argv)
|
||||
|
||||
options = ldb_cmdline_process(ldb, argc, argv, usage);
|
||||
|
||||
if (ldb_transaction_start(ldb) != 0) {
|
||||
printf("Failed to start transaction\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (options->argc == 0) {
|
||||
ret = process_file(ldb, stdin, &count);
|
||||
} else {
|
||||
@ -108,6 +113,11 @@ int main(int argc, const char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
if (count != 0 && ldb_transaction_commit(ldb) != 0) {
|
||||
printf("Failed to commit transaction\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
talloc_free(ldb);
|
||||
|
||||
printf("Added %d records with %d failures\n", count, failures);
|
||||
|
@ -112,6 +112,11 @@ static int merge_edits(struct ldb_context *ldb,
|
||||
int ret = 0;
|
||||
int adds=0, modifies=0, deletes=0;
|
||||
|
||||
if (ldb_transaction_start(ldb) != 0) {
|
||||
fprintf(stderr, "Failed to start transaction\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* do the adds and modifies */
|
||||
for (i=0;i<count2;i++) {
|
||||
msg = msg_find(ldb, msgs1, count1, msgs2[i]->dn);
|
||||
@ -150,6 +155,11 @@ static int merge_edits(struct ldb_context *ldb,
|
||||
}
|
||||
}
|
||||
|
||||
if (ldb_transaction_commit(ldb) != 0) {
|
||||
fprintf(stderr, "Failed to commit transaction\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
printf("# %d adds %d modifies %d deletes\n", adds, modifies, deletes);
|
||||
|
||||
return ret;
|
||||
|
@ -91,6 +91,11 @@ int main(int argc, const char **argv)
|
||||
|
||||
ldb = ldb_init(NULL, NULL);
|
||||
|
||||
if (ldb_transaction_start(ldb) != 0) {
|
||||
printf("Failed to start transaction\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
options = ldb_cmdline_process(ldb, argc, argv, usage);
|
||||
|
||||
if (options->argc == 0) {
|
||||
@ -108,6 +113,11 @@ int main(int argc, const char **argv)
|
||||
}
|
||||
}
|
||||
|
||||
if (count != 0 && ldb_transaction_commit(ldb) != 0) {
|
||||
printf("Failed to commit transaction\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
talloc_free(ldb);
|
||||
|
||||
printf("Modified %d records with %d failures\n", count, failures);
|
||||
|
Loading…
Reference in New Issue
Block a user