From a1143569bf982bebe1373abe51509d9f5908cd72 Mon Sep 17 00:00:00 2001 From: cxl Date: Fri, 4 Sep 2009 12:19:39 +0000 Subject: [PATCH] PGSQL except/minus patch git-svn-id: svn://ultimatepp.org/upp/trunk@1548 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/Sql/SqlSet.cpp | 8 +++++++- uppsrc/Sql/SqlStatement.cpp | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/uppsrc/Sql/SqlSet.cpp b/uppsrc/Sql/SqlSet.cpp index cab1fa10c..63f0d460a 100644 --- a/uppsrc/Sql/SqlSet.cpp +++ b/uppsrc/Sql/SqlSet.cpp @@ -17,7 +17,13 @@ SqlSet operator&(const SqlSet& s1, const SqlSet& s2) { SqlSet operator-(const SqlSet& s1, const SqlSet& s2) { if(s1.IsEmpty() || s2.IsEmpty()) return s1; - return SqlSet(s1() + SqlCase(MSSQL, " except ")(" minus ") + s2(), SqlSet::SETOP); + return SqlSet(s1() + SqlCase(MSSQL|PGSQL, " except ")(" minus ") + s2(), SqlSet::SETOP); +} + +SqlSet operator-(const SqlSet& s1, const SqlSet& s2) { + if(s1.IsEmpty() || s2.IsEmpty()) + return s1; + return SqlSet(s1() + SqlCase(MSSQL|PGSQL, " except ")(" minus ") + s2(), SqlSet::SETOP); } String SqlSet::operator~() const { diff --git a/uppsrc/Sql/SqlStatement.cpp b/uppsrc/Sql/SqlStatement.cpp index 286f57b54..e5d8be824 100644 --- a/uppsrc/Sql/SqlStatement.cpp +++ b/uppsrc/Sql/SqlStatement.cpp @@ -19,7 +19,7 @@ SqlSelect& SqlSelect::operator&=(const SqlSelect& s2) { } SqlSelect& SqlSelect::operator-=(const SqlSelect& s2) { - text << " minus (" << s2.text << ')'; + text << SqlCase(MSSQL|PGSQL," except (")(" minus (") << s2.text << ')'; return *this; }