// file : odb/pgsql/query.txx // author : Constantin Michael // copyright : Copyright (c) 2009-2011 Code Synthesis Tools CC // license : GNU GPL v2; see accompanying LICENSE file namespace odb { namespace pgsql { // query // template query:: query (const query_column& c) : binding_ (0, 0), native_binding_ (0, 0, 0, 0) { clause_.push_back (clause_part (clause_part::column, c.name ())); // Cannot use IS TRUE here since database type can be a non- // integral type. // clause_.push_back (clause_part (clause_part::native, "=")); append (val_bind (true)); } // query_column // template query query_column:: in (const T& v1, const T& v2) const { query q (name_, query::clause_part::column); q += "IN ("; q.append (val_bind (v1)); q += ","; q.append (val_bind (v2)); q += ")"; return q; } template query query_column:: in (const T& v1, const T& v2, const T& v3) const { query q (name_, query::clause_part::column); q += "IN ("; q.append (val_bind (v1)); q += ","; q.append (val_bind (v2)); q += ","; q.append (val_bind (v3)); q += ")"; return q; } template query query_column:: in (const T& v1, const T& v2, const T& v3, const T& v4) const { query q (name_, query::clause_part::column); q += "IN ("; q.append (val_bind (v1)); q += ","; q.append (val_bind (v2)); q += ","; q.append (val_bind (v3)); q += ","; q.append (val_bind (v4)); q += ")"; return q; } template query query_column:: in (const T& v1, const T& v2, const T& v3, const T& v4, const T& v5) const { query q (name_, query::clause_part::column); q += "IN ("; q.append (val_bind (v1)); q += ","; q.append (val_bind (v2)); q += ","; q.append (val_bind (v3)); q += ","; q.append (val_bind (v4)); q += ","; q.append (val_bind (v5)); q += ")"; return q; } template template query query_column:: in_range (I begin, I end) const { query q (name_, query::clause_part::column); q += "IN ("; for (I i (begin); i != end; ++i) { if (i != begin) q += ","; q.append (val_bind (*i)); } q += ")"; return q; } } }