diff options
author | Dan Goodliffe <dan@randomdan.homeip.net> | 2016-05-26 21:02:58 +0100 |
---|---|---|
committer | Dan Goodliffe <dan@randomdan.homeip.net> | 2016-05-26 21:02:58 +0100 |
commit | 16e7c9c9079cfc9d8292de66f81cda0996012ec3 (patch) | |
tree | d070ffbe2a12e0ed3d55120568ebea61b8740c41 | |
parent | Improve file list merging with second temp table (diff) | |
download | gentoobrowse-api-16e7c9c9079cfc9d8292de66f81cda0996012ec3.tar.bz2 gentoobrowse-api-16e7c9c9079cfc9d8292de66f81cda0996012ec3.tar.xz gentoobrowse-api-16e7c9c9079cfc9d8292de66f81cda0996012ec3.zip |
Use SQL copy to upload file list faster
-rw-r--r-- | gentoobrowse-api/service/maintenanceimpl.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/gentoobrowse-api/service/maintenanceimpl.cpp b/gentoobrowse-api/service/maintenanceimpl.cpp index 495e908..2bb43af 100644 --- a/gentoobrowse-api/service/maintenanceimpl.cpp +++ b/gentoobrowse-api/service/maintenanceimpl.cpp @@ -137,16 +137,20 @@ namespace Gentoo { boost::filesystem::create_symlink(p, tmp / n); }); dbc->execute(sql::maintenance::fileListCreateRaw.getSql()); - auto i = dbc->modify("INSERT INTO filelistraw(filename, filesize, filemtime) VALUES(?, ?, ?)"); + dbc->beginBulkUpload("filelistraw", ""); + char buf[BUFSIZ]; for (boost::filesystem::recursive_directory_iterator d(tmp, boost::filesystem::symlink_option::recurse); d != boost::filesystem::recursive_directory_iterator(); d++) { if (boost::filesystem::is_regular_file(d->status())) { - i->bindParamS(0, d->path().lexically_relative(tmp).string()); - i->bindParamI(1, boost::filesystem::file_size(*d)); - i->bindParamT(2, boost::posix_time::from_time_t(boost::filesystem::last_write_time(*d))); - i->execute(); + auto len = snprintf(buf, BUFSIZ, "%s\t%ld\t%s\n", + d->path().lexically_relative(tmp).c_str(), + boost::filesystem::file_size(*d), + boost::posix_time::to_iso_extended_string( + boost::posix_time::from_time_t(boost::filesystem::last_write_time(*d))).c_str()); + dbc->bulkUploadData(buf, len); } } + dbc->endBulkUpload(nullptr); } void |