|
@@ -99,7 +99,9 @@ int main(int argc, char* argv[]) {
|
|
|
|
|
|
std::vector<decltype(random_numbers.all_fields())> numbers(N);
|
|
std::vector<decltype(random_numbers.all_fields())> numbers(N);
|
|
|
|
|
|
|
|
+#if TFB_MYSQL
|
|
raw_c("START TRANSACTION");
|
|
raw_c("START TRANSACTION");
|
|
|
|
+#endif
|
|
for (int i = 0; i < N; i++)
|
|
for (int i = 0; i < N; i++)
|
|
{
|
|
{
|
|
numbers[i] = c.find_one(s::id = 1 + rand() % 9999).value();
|
|
numbers[i] = c.find_one(s::id = 1 + rand() % 9999).value();
|
|
@@ -111,16 +113,20 @@ int main(int argc, char* argv[]) {
|
|
#if TFB_MYSQL
|
|
#if TFB_MYSQL
|
|
for (int i = 0; i < N; i++)
|
|
for (int i = 0; i < N; i++)
|
|
c.update(numbers[i]);
|
|
c.update(numbers[i]);
|
|
|
|
+ raw_c("COMMIT");
|
|
#elif TFB_PGSQL
|
|
#elif TFB_PGSQL
|
|
- std::ostringstream ss;
|
|
|
|
- ss << "UPDATE World SET randomNumber=tmp.randomNumber FROM (VALUES ";
|
|
|
|
- for (int i = 0; i < N; i++)
|
|
|
|
- ss << "(" << numbers[i].id << ", " << numbers[i].randomNumber << ") "<< (i == N-1 ? "": ",");
|
|
|
|
- ss << ") AS tmp(id, randomNumber) WHERE tmp.id = World.id";
|
|
|
|
- raw_c(ss.str());
|
|
|
|
|
|
+ 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
|
|
|
|
|
|
- raw_c("COMMIT");
|
|
|
|
|
|
|
|
response.write_json(numbers);
|
|
response.write_json(numbers);
|
|
};
|
|
};
|