Browse Source

Lithium: Use the bulk_update orm method. (#5481)

Matthieu Garrigues 5 years ago
parent
commit
ae76e43b17

+ 1 - 1
frameworks/C++/lithium/lithium-mysql.dockerfile

@@ -5,7 +5,7 @@ RUN apt install -yqq libboost-dev libmariadb-dev wget  libboost-context-dev g++-
 
 
 COPY ./ ./
 COPY ./ ./
 
 
-ENV COMMIT=fff8ab327b905f89396b911e940e828dc8c6d742
+ENV COMMIT=e3991f07ea161b1536a089050245f95669c6ba26
 
 
 RUN wget https://raw.githubusercontent.com/matt-42/lithium/$COMMIT/single_headers/lithium_mysql.hh
 RUN wget https://raw.githubusercontent.com/matt-42/lithium/$COMMIT/single_headers/lithium_mysql.hh
 RUN wget https://raw.githubusercontent.com/matt-42/lithium/$COMMIT/single_headers/lithium_http_backend.hh
 RUN wget https://raw.githubusercontent.com/matt-42/lithium/$COMMIT/single_headers/lithium_http_backend.hh

+ 2 - 2
frameworks/C++/lithium/lithium-plaintext-g.dockerfile

@@ -5,11 +5,11 @@ RUN apt install -yqq libboost-dev libmariadb-dev wget  libboost-context-dev g++-
 
 
 COPY ./ ./
 COPY ./ ./
 
 
-ENV COMMIT=fff8ab327b905f89396b911e940e828dc8c6d742
+ENV COMMIT=e3991f07ea161b1536a089050245f95669c6ba26
 
 
 RUN wget https://raw.githubusercontent.com/matt-42/lithium/$COMMIT/single_headers/lithium_mysql.hh
 RUN wget https://raw.githubusercontent.com/matt-42/lithium/$COMMIT/single_headers/lithium_mysql.hh
 RUN wget https://raw.githubusercontent.com/matt-42/lithium/$COMMIT/single_headers/lithium_http_backend.hh
 RUN wget https://raw.githubusercontent.com/matt-42/lithium/$COMMIT/single_headers/lithium_http_backend.hh
 
 
-RUN g++ -g -DTFB_MYSQL -O3 -march=native -std=c++17 ./lithium.cc -I /usr/include/mariadb -lpthread -lmariadbclient -lboost_context -o /lithium_tbf
+RUN g++ -g -DTFB_MYSQL -std=c++17 ./lithium.cc -I /usr/include/mariadb -lpthread -lmariadbclient -lboost_context -o /lithium_tbf
 
 
 CMD gdb -batch -x ./gdb.cmds --args /lithium_tbf tfb-database 8080
 CMD gdb -batch -x ./gdb.cmds --args /lithium_tbf tfb-database 8080

+ 1 - 1
frameworks/C++/lithium/lithium-postgres.dockerfile

@@ -5,7 +5,7 @@ RUN apt install -yqq g++-9 libboost-dev postgresql-server-dev-all libpq-dev wget
 
 
 COPY ./ ./
 COPY ./ ./
 
 
-ENV COMMIT=fff8ab327b905f89396b911e940e828dc8c6d742
+ENV COMMIT=e3991f07ea161b1536a089050245f95669c6ba26
 
 
 RUN wget https://raw.githubusercontent.com/matt-42/lithium/$COMMIT/single_headers/lithium_pgsql.hh
 RUN wget https://raw.githubusercontent.com/matt-42/lithium/$COMMIT/single_headers/lithium_pgsql.hh
 RUN wget https://raw.githubusercontent.com/matt-42/lithium/$COMMIT/single_headers/lithium_http_backend.hh
 RUN wget https://raw.githubusercontent.com/matt-42/lithium/$COMMIT/single_headers/lithium_http_backend.hh

+ 2 - 13
frameworks/C++/lithium/lithium.cc

@@ -146,21 +146,10 @@ int main(int argc, char* argv[]) {
 
 
       std::sort(numbers.begin(), numbers.end(), [] (auto a, auto b) { return a.id < b.id; });
       std::sort(numbers.begin(), numbers.end(), [] (auto a, auto b) { return a.id < b.id; });
 
 
+      c.bulk_update(numbers);
+
 #if TFB_MYSQL
 #if TFB_MYSQL
-      for (int i = 0; i < N; i++)
-        c.update(numbers[i]);
       raw_c("COMMIT");
       raw_c("COMMIT");
-#elif TFB_PGSQL
-      raw_c.cached_statement
-        ([N] {
-          std::ostringstream ss;
-          ss << "UPDATE World SET randomNumber=tmp.randomNumber FROM (VALUES ";
-          for (int i = 0; i < N; i++)
-            ss << "($" << i*2+1 << "::integer, $" << i*2+2 << "::integer) "<< (i == N-1 ? "": ",");
-          ss << ") AS tmp(id, randomNumber) WHERE tmp.id = World.id";
-          return ss.str();
-        }, N)(numbers);
-      
 #endif
 #endif
     }
     }