mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-01-18 11:05:48 +08:00
ITS#10275 mdb_load: add -Q option to use NOSYNC for faster loading
This commit is contained in:
parent
9c9d34558c
commit
da9aeda08c
@ -18,6 +18,8 @@ mdb_load \- LMDB environment import tool
|
|||||||
[\c
|
[\c
|
||||||
.BR \-N ]
|
.BR \-N ]
|
||||||
[\c
|
[\c
|
||||||
|
.BR \-Q ]
|
||||||
|
[\c
|
||||||
.BR \-T ]
|
.BR \-T ]
|
||||||
.BR \ envpath
|
.BR \ envpath
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
@ -58,6 +60,9 @@ Load a specific subdatabase. If no database is specified, data is loaded into th
|
|||||||
.BR \-N
|
.BR \-N
|
||||||
Don't overwrite existing records when loading into an already existing database; just skip them.
|
Don't overwrite existing records when loading into an already existing database; just skip them.
|
||||||
.TP
|
.TP
|
||||||
|
.BR \-Q
|
||||||
|
Quick mode, uses MDB_NOSYNC for faster loading. Forces sync with mdb_env_sync() before exiting.
|
||||||
|
.TP
|
||||||
.BR \-T
|
.BR \-T
|
||||||
Load data from simple text files. The input must be paired lines of text, where the first
|
Load data from simple text files. The input must be paired lines of text, where the first
|
||||||
line of the pair is the key item, and the second line of the pair is its corresponding
|
line of the pair is the key item, and the second line of the pair is its corresponding
|
||||||
|
@ -308,10 +308,11 @@ int main(int argc, char *argv[])
|
|||||||
* -n: use NOSUBDIR flag on env_open
|
* -n: use NOSUBDIR flag on env_open
|
||||||
* -s: load into named subDB
|
* -s: load into named subDB
|
||||||
* -N: use NOOVERWRITE on puts
|
* -N: use NOOVERWRITE on puts
|
||||||
|
* -Q: quick mode using NOSYNC
|
||||||
* -T: read plaintext
|
* -T: read plaintext
|
||||||
* -V: print version and exit
|
* -V: print version and exit
|
||||||
*/
|
*/
|
||||||
while ((i = getopt(argc, argv, "af:ns:NTV")) != EOF) {
|
while ((i = getopt(argc, argv, "af:ns:NQTV")) != EOF) {
|
||||||
switch(i) {
|
switch(i) {
|
||||||
case 'V':
|
case 'V':
|
||||||
printf("%s\n", MDB_VERSION_STRING);
|
printf("%s\n", MDB_VERSION_STRING);
|
||||||
@ -336,6 +337,9 @@ int main(int argc, char *argv[])
|
|||||||
case 'N':
|
case 'N':
|
||||||
putflags = MDB_NOOVERWRITE|MDB_NODUPDATA;
|
putflags = MDB_NOOVERWRITE|MDB_NODUPDATA;
|
||||||
break;
|
break;
|
||||||
|
case 'Q':
|
||||||
|
envflags |= MDB_NOSYNC;
|
||||||
|
break;
|
||||||
case 'T':
|
case 'T':
|
||||||
mode |= NOHDR | PRINT;
|
mode |= NOHDR | PRINT;
|
||||||
break;
|
break;
|
||||||
@ -399,9 +403,9 @@ int main(int argc, char *argv[])
|
|||||||
goto env_close;
|
goto env_close;
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = mdb_open(txn, subname, flags|MDB_CREATE, &dbi);
|
rc = mdb_dbi_open(txn, subname, flags|MDB_CREATE, &dbi);
|
||||||
if (rc) {
|
if (rc) {
|
||||||
fprintf(stderr, "mdb_open failed, error %d %s\n", rc, mdb_strerror(rc));
|
fprintf(stderr, "mdb_dbi_open failed, error %d %s\n", rc, mdb_strerror(rc));
|
||||||
goto txn_abort;
|
goto txn_abort;
|
||||||
}
|
}
|
||||||
prevk.mv_size = 0;
|
prevk.mv_size = 0;
|
||||||
@ -482,6 +486,13 @@ int main(int argc, char *argv[])
|
|||||||
prog, lineno, mdb_strerror(rc));
|
prog, lineno, mdb_strerror(rc));
|
||||||
goto env_close;
|
goto env_close;
|
||||||
}
|
}
|
||||||
|
if (envflags & MDB_NOSYNC) {
|
||||||
|
rc = mdb_env_sync(env, 1);
|
||||||
|
if (rc) {
|
||||||
|
fprintf(stderr, "mdb_env_sync failed, error %d %s\n", rc, mdb_strerror(rc));
|
||||||
|
goto env_close;
|
||||||
|
}
|
||||||
|
}
|
||||||
mdb_dbi_close(env, dbi);
|
mdb_dbi_close(env, dbi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user