From 3f1324fd527317e25bbb7de6921fdbecf800a9bf Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 21 Dec 2011 15:35:51 +0200 Subject: Do not select object id in container SELECT statement --- odb/pgsql/container-statements.hxx | 26 +++++++++++++++++++++----- odb/pgsql/container-statements.txx | 28 +++++++++++++++++----------- 2 files changed, 38 insertions(+), 16 deletions(-) diff --git a/odb/pgsql/container-statements.hxx b/odb/pgsql/container-statements.hxx index 79c6e6b..0b207e9 100644 --- a/odb/pgsql/container-statements.hxx +++ b/odb/pgsql/container-statements.hxx @@ -170,6 +170,18 @@ namespace odb return data_image_native_binding_; } + binding& + select_image_binding () + { + return select_image_binding_; + } + + bool* + select_image_truncated () + { + return select_image_truncated_; + } + // // Statements. // @@ -209,7 +221,7 @@ namespace odb select_all_count_, cond_image_binding_, cond_image_native_binding_, - data_image_binding_, + select_image_binding_, false)); } @@ -250,17 +262,21 @@ namespace odb std::size_t cond_image_version_; std::size_t cond_id_binding_version_; binding cond_image_binding_; - bind* cond_image_bind_; native_binding cond_image_native_binding_; data_image_type data_image_; std::size_t data_image_version_; std::size_t data_id_binding_version_; + binding data_image_binding_; - bind* data_image_bind_; bool* data_image_truncated_; native_binding data_image_native_binding_; + // Skips the id from data_image_binding. + // + binding select_image_binding_; + bool* select_image_truncated_; + const char* insert_one_name_; const char* insert_one_text_; const Oid* insert_one_types_; @@ -298,12 +314,12 @@ namespace odb container_statements_impl& operator= (const container_statements_impl&); private: - bind cond_image_bind_array_[traits::cond_column_count]; + bind cond_image_bind_[traits::cond_column_count]; char* cond_image_values_[traits::cond_column_count]; int cond_image_lengths_[traits::cond_column_count]; int cond_image_formats_[traits::cond_column_count]; - bind data_image_bind_array_[traits::data_column_count]; + bind data_image_bind_[traits::data_column_count]; char* data_image_values_[traits::data_column_count]; int data_image_lengths_[traits::data_column_count]; int data_image_formats_[traits::data_column_count]; diff --git a/odb/pgsql/container-statements.txx b/odb/pgsql/container-statements.txx index 72ce213..56af8a2 100644 --- a/odb/pgsql/container-statements.txx +++ b/odb/pgsql/container-statements.txx @@ -22,10 +22,11 @@ namespace odb &traits::load_all, &traits::delete_all), id_binding_ (0), - cond_image_binding_ (0, 0), // Initialized by impl. - cond_image_native_binding_ (0, 0, 0, 0), // Initialized by impl. - data_image_binding_ (0, 0), // Initialized by impl. - data_image_native_binding_ (0, 0, 0, 0) // Initialized by impl. + cond_image_binding_ (0, 0), // Initialized by impl. + cond_image_native_binding_ (0, 0, 0, 0), // Initialized by impl. + data_image_binding_ (0, 0), // Initialized by impl. + data_image_native_binding_ (0, 0, 0, 0), // Initialized by impl. + select_image_binding_ (0, 0) // Initialized by impl. { cond_image_.version = 0; cond_image_version_ = 0; @@ -41,16 +42,21 @@ namespace odb container_statements_impl (connection_type& conn) : base (conn) { - this->cond_image_bind_ = cond_image_bind_array_; - this->data_image_bind_ = data_image_bind_array_; this->data_image_truncated_ = data_image_truncated_array_; + this->select_image_truncated_ = data_image_truncated_array_ + + traits::id_column_count; - this->cond_image_binding_.bind = this->cond_image_bind_; + this->cond_image_binding_.bind = cond_image_bind_; this->cond_image_binding_.count = traits::cond_column_count; - this->data_image_binding_.bind = this->data_image_bind_; + this->data_image_binding_.bind = data_image_bind_; this->data_image_binding_.count = traits::data_column_count; + this->select_image_binding_.bind = data_image_bind_ + + traits::id_column_count; + this->select_image_binding_.count = traits::data_column_count - + traits::id_column_count; + this->cond_image_native_binding_.values = cond_image_values_; this->cond_image_native_binding_.lengths = cond_image_lengths_; this->cond_image_native_binding_.formats = cond_image_formats_; @@ -61,14 +67,14 @@ namespace odb this->data_image_native_binding_.formats = data_image_formats_; this->data_image_native_binding_.count = traits::data_column_count; - std::memset (cond_image_bind_array_, 0, sizeof (cond_image_bind_array_)); - std::memset (data_image_bind_array_, 0, sizeof (data_image_bind_array_)); + std::memset (cond_image_bind_, 0, sizeof (cond_image_bind_)); + std::memset (data_image_bind_, 0, sizeof (data_image_bind_)); std::memset (data_image_truncated_array_, 0, sizeof (data_image_truncated_array_)); for (std::size_t i (0); i < traits::data_column_count; ++i) - data_image_bind_array_[i].truncated = data_image_truncated_array_ + i; + data_image_bind_[i].truncated = data_image_truncated_array_ + i; this->insert_one_name_ = traits::insert_one_name; this->insert_one_text_ = traits::insert_one_statement; -- cgit v1.1