diff options
author | Boris Kolpackov <boris@codesynthesis.com> | 2021-06-16 11:28:56 +0200 |
---|---|---|
committer | Boris Kolpackov <boris@codesynthesis.com> | 2021-06-29 11:11:44 +0200 |
commit | 7b51842728b6ee99945afe401fca317c703a12d9 (patch) | |
tree | 7ed893517f793928679254a74cd7b28479556f4f /odb/pgsql/simple-object-statements.txx | |
parent | c6019273a7564be9ed772d45aa95e09aaff37a23 (diff) |
Add support for bulk operations using pipeline mode in libpq 14
Diffstat (limited to 'odb/pgsql/simple-object-statements.txx')
-rw-r--r-- | odb/pgsql/simple-object-statements.txx | 36 |
1 files changed, 27 insertions, 9 deletions
diff --git a/odb/pgsql/simple-object-statements.txx b/odb/pgsql/simple-object-statements.txx index ad87e73..bb47b43 100644 --- a/odb/pgsql/simple-object-statements.txx +++ b/odb/pgsql/simple-object-statements.txx @@ -19,11 +19,15 @@ namespace odb template <typename T> optimistic_data<T, true>:: - optimistic_data (bind* b, char** nv, int* nl, int* nf) + optimistic_data (bind* b, char** nv, int* nl, int* nf, + std::size_t skip, unsigned long long* status) : id_image_binding_ ( b, object_traits::id_column_count + - object_traits::managed_optimistic_column_count), + object_traits::managed_optimistic_column_count, + object_traits::batch, + skip, + status), id_image_native_binding_ ( nv, nl, nf, object_traits::id_column_count + @@ -48,7 +52,11 @@ namespace odb // select select_image_binding_ (select_image_bind_, select_column_count), // insert - insert_image_binding_ (insert_image_bind_, insert_column_count), + insert_image_binding_ (insert_image_bind_, + insert_column_count, + object_traits::batch, + sizeof (images), + status_), insert_image_native_binding_ (insert_image_values_, insert_image_lengths_, insert_image_formats_, @@ -56,7 +64,10 @@ namespace odb // update update_image_binding_ (update_image_bind_, update_column_count + id_column_count + - managed_optimistic_column_count), + managed_optimistic_column_count, + object_traits::batch, + sizeof (images), + status_), update_image_native_binding_ (update_image_values_, update_image_lengths_, update_image_formats_, @@ -64,7 +75,10 @@ namespace odb managed_optimistic_column_count), // id id_image_binding_ (update_image_bind_ + update_column_count, - id_column_count), + id_column_count, + object_traits::batch, + sizeof (images), + status_), id_image_native_binding_ ( update_image_values_ + update_column_count, update_image_lengths_ + update_column_count, @@ -74,15 +88,19 @@ namespace odb od_ (update_image_bind_ + update_column_count, update_image_values_ + update_column_count, update_image_lengths_ + update_column_count, - update_image_formats_ + update_column_count) + update_image_formats_ + update_column_count, + sizeof (images), + status_) { - image_.version = 0; + // Only versions in the first element used. + // + images_[0].obj.version = 0; + images_[0].id.version = 0; + select_image_version_ = 0; insert_image_version_ = 0; update_image_version_ = 0; update_id_image_version_ = 0; - - id_image_.version = 0; id_image_version_ = 0; std::memset (insert_image_bind_, 0, sizeof (insert_image_bind_)); |