From 62c19a34f1b32f084845ea51eba9b6fb910ef66b Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Wed, 25 Jul 2012 14:46:13 +0200 Subject: Clean up PostgreSQL auto id implementation Specifically, avoid sending the auto id value. --- odb/relational/pgsql/context.cxx | 2 +- odb/relational/pgsql/source.cxx | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/odb/relational/pgsql/context.cxx b/odb/relational/pgsql/context.cxx index e8cbabd..bed0d1a 100644 --- a/odb/relational/pgsql/context.cxx +++ b/odb/relational/pgsql/context.cxx @@ -80,7 +80,7 @@ namespace relational generate_grow = true; need_alias_as = true; - insert_send_auto_id = true; + insert_send_auto_id = false; delay_freeing_statement_result = false; need_image_clone = false; data_->bind_vector_ = "pgsql::bind*"; diff --git a/odb/relational/pgsql/source.cxx b/odb/relational/pgsql/source.cxx index 26df223..a327b2a 100644 --- a/odb/relational/pgsql/source.cxx +++ b/odb/relational/pgsql/source.cxx @@ -22,8 +22,7 @@ namespace relational struct query_parameters: relational::query_parameters { query_parameters (base const& x) - : base (x), - i_ (0) + : base (x), i_ (0) { } @@ -39,7 +38,6 @@ namespace relational virtual string auto_id () { - ++i_; return "DEFAULT"; } @@ -128,8 +126,15 @@ namespace relational // generating. See object_columns in common source generator for // details. // - if ((id () || readonly (member_path_, member_scope_)) && - sk_ == statement_update) + if (id ()) + { + if (sk_ == statement_update || + (sk_ == statement_insert && auto_ (m))) + return false; + } + + if (sk_ == statement_update && + readonly (member_path_, member_scope_)) return false; if ((sk_ == statement_insert || sk_ == statement_update) && -- cgit v1.1