summaryrefslogtreecommitdiff
path: root/source4/lib/ldb
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2005-09-22 04:16:46 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 13:38:41 -0500
commitd78ea3e34abd30fb388c4cc39e12611e211416a6 (patch)
tree4c111134a0850a7cd11283df50afd9484df8c8f3 /source4/lib/ldb
parentede8415d61b6791114c65de1c283a4e8c11f1585 (diff)
downloadsamba-d78ea3e34abd30fb388c4cc39e12611e211416a6.tar.gz
samba-d78ea3e34abd30fb388c4cc39e12611e211416a6.tar.bz2
samba-d78ea3e34abd30fb388c4cc39e12611e211416a6.zip
r10406: added --nosync option to all ldb tools, so that you can control if
transactions are synchronous or not on the command line. add LDB_FLG_NOSYNC flag to ldb_connect() so we can make our temporary ldb databases non-synchronous (This used to be commit dba41164e0c52f1e4351bd9057b16661cee3a822)
Diffstat (limited to 'source4/lib/ldb')
-rw-r--r--source4/lib/ldb/include/ldb.h1
-rw-r--r--source4/lib/ldb/ldb_sqlite3/ldb_sqlite3.c20
-rw-r--r--source4/lib/ldb/ldb_tdb/ldb_tdb.c9
-rw-r--r--source4/lib/ldb/tools/cmdline.c7
-rw-r--r--source4/lib/ldb/tools/cmdline.h1
-rw-r--r--source4/lib/ldb/tools/ldbtest.c7
6 files changed, 29 insertions, 16 deletions
diff --git a/source4/lib/ldb/include/ldb.h b/source4/lib/ldb/include/ldb.h
index 008327eb05..f7abd920eb 100644
--- a/source4/lib/ldb/include/ldb.h
+++ b/source4/lib/ldb/include/ldb.h
@@ -158,6 +158,7 @@ struct ldb_debug_ops {
};
#define LDB_FLG_RDONLY 1
+#define LDB_FLG_NOSYNC 2
#ifndef PRINTF_ATTRIBUTE
#define PRINTF_ATTRIBUTE(a,b)
diff --git a/source4/lib/ldb/ldb_sqlite3/ldb_sqlite3.c b/source4/lib/ldb/ldb_sqlite3/ldb_sqlite3.c
index 8742b53962..ac706291ef 100644
--- a/source4/lib/ldb/ldb_sqlite3/ldb_sqlite3.c
+++ b/source4/lib/ldb/ldb_sqlite3/ldb_sqlite3.c
@@ -1522,7 +1522,7 @@ static int lsqlite3_end_trans(struct ldb_module *module, int status)
*/
static int initialize(struct lsqlite3_private *lsqlite3,
- struct ldb_context *ldb, const char *url)
+ struct ldb_context *ldb, const char *url, int flags)
{
TALLOC_CTX *local_ctx;
long long queryInt;
@@ -1648,14 +1648,16 @@ static int initialize(struct lsqlite3_private *lsqlite3,
goto failed;
}
- /* DANGEROUS */
- ret = sqlite3_exec(lsqlite3->sqlite, "PRAGMA synchronous = OFF;", NULL, NULL, &errmsg);
- if (ret != SQLITE_OK) {
- if (errmsg) {
- printf("lsqlite3 initializaion error: %s\n", errmsg);
- free(errmsg);
+ if (flags & LDB_FLG_NOSYNC) {
+ /* DANGEROUS */
+ ret = sqlite3_exec(lsqlite3->sqlite, "PRAGMA synchronous = OFF;", NULL, NULL, &errmsg);
+ if (ret != SQLITE_OK) {
+ if (errmsg) {
+ printf("lsqlite3 initializaion error: %s\n", errmsg);
+ free(errmsg);
+ }
+ goto failed;
}
- goto failed;
}
/* */
@@ -1836,7 +1838,7 @@ int lsqlite3_connect(struct ldb_context *ldb,
lsqlite3->options = NULL;
lsqlite3->trans_count = 0;
- ret = initialize(lsqlite3, ldb, url);
+ ret = initialize(lsqlite3, ldb, url, flags);
if (ret != SQLITE_OK) {
goto failed;
}
diff --git a/source4/lib/ldb/ldb_tdb/ldb_tdb.c b/source4/lib/ldb/ldb_tdb/ldb_tdb.c
index c056bd2e2d..a2faaa805f 100644
--- a/source4/lib/ldb/ldb_tdb/ldb_tdb.c
+++ b/source4/lib/ldb/ldb_tdb/ldb_tdb.c
@@ -895,11 +895,10 @@ int ltdb_connect(struct ldb_context *ldb, const char *url,
tdb_flags = TDB_DEFAULT;
-#if 0
- /* set this to run tdb without disk sync, but still with
- transactions */
- tdb_flags |= TDB_NOSYNC;
-#endif
+ /* check for the 'nosync' option */
+ if (flags & LDB_FLG_NOSYNC) {
+ tdb_flags |= TDB_NOSYNC;
+ }
if (flags & LDB_FLG_RDONLY) {
open_flags = O_RDONLY;
diff --git a/source4/lib/ldb/tools/cmdline.c b/source4/lib/ldb/tools/cmdline.c
index fb0292b7d9..7cdecc334f 100644
--- a/source4/lib/ldb/tools/cmdline.c
+++ b/source4/lib/ldb/tools/cmdline.c
@@ -55,6 +55,7 @@ struct ldb_cmdline *ldb_cmdline_process(struct ldb_context *ldb, int argc, const
{ "num-searches", 0, POPT_ARG_INT, &options.num_searches, 0, "number of test searches", NULL },
{ "num-records", 0, POPT_ARG_INT, &options.num_records, 0, "number of test records", NULL },
{ "all", 'a', POPT_ARG_NONE, &options.all_records, 0, "dn=*", NULL },
+ { "nosync", 0, POPT_ARG_NONE, &options.nosync, 0, "non-synchronous transactions", NULL },
{ "sorted", 'S', POPT_ARG_NONE, &options.sorted, 0, "sort attributes", NULL },
{ "sasl-mechanism", 0, POPT_ARG_STRING, &options.sasl_mechanism, 0, "choose SASL mechanism", "MECHANISM" },
{ "input", 'I', POPT_ARG_STRING, &options.input, 0, "Input File", "Input" },
@@ -159,7 +160,11 @@ struct ldb_cmdline *ldb_cmdline_process(struct ldb_context *ldb, int argc, const
}
if (strcmp(ret->url, "NONE") != 0) {
- if (ldb_connect(ldb, ret->url, 0, ret->options) != 0) {
+ int flags = 0;
+ if (options.nosync) {
+ flags |= LDB_FLG_NOSYNC;
+ }
+ if (ldb_connect(ldb, ret->url, flags, ret->options) != 0) {
fprintf(stderr, "Failed to connect to %s - %s\n",
ret->url, ldb_errstring(ldb));
goto failed;
diff --git a/source4/lib/ldb/tools/cmdline.h b/source4/lib/ldb/tools/cmdline.h
index daf9c06f42..9aaf37a978 100644
--- a/source4/lib/ldb/tools/cmdline.h
+++ b/source4/lib/ldb/tools/cmdline.h
@@ -34,6 +34,7 @@ struct ldb_cmdline {
int verbose;
int recursive;
int all_records;
+ int nosync;
const char **options;
int argc;
const char **argv;
diff --git a/source4/lib/ldb/tools/ldbtest.c b/source4/lib/ldb/tools/ldbtest.c
index eeedd49e84..08ce99d20f 100644
--- a/source4/lib/ldb/tools/ldbtest.c
+++ b/source4/lib/ldb/tools/ldbtest.c
@@ -299,6 +299,11 @@ static void start_test_index(struct ldb_context **ldb)
struct ldb_dn *indexlist;
struct ldb_dn *basedn;
int ret;
+ int flags = 0;
+
+ if (options->nosync) {
+ flags |= LDB_FLG_NOSYNC;
+ }
printf("Starting index test\n");
@@ -337,7 +342,7 @@ static void start_test_index(struct ldb_context **ldb)
(*ldb) = ldb_init(options);
- ret = ldb_connect(*ldb, options->url, 0, NULL);
+ ret = ldb_connect(*ldb, options->url, flags, NULL);
if (ret != 0) {
printf("failed to connect to %s\n", options->url);
exit(1);