diff --git a/uppsrc/Sql/SqlCase.cpp b/uppsrc/Sql/SqlCase.cpp index 7c5ea34e3..4a7b2a49a 100644 --- a/uppsrc/Sql/SqlCase.cpp +++ b/uppsrc/Sql/SqlCase.cpp @@ -43,15 +43,20 @@ void SqlCompile(const char *&s, StringBuffer *r, byte dialect) break; case SQLC_ID: { for(;;) { - if(r) - *r << quote; const char *b = s; - while((byte)*s >= 32) + bool do_quote = IsAlpha(*s) || *s == '_' || *s == '$'; + while((byte)*s >= 32) { + if(!(IsAlNum(*s) || *s == '_' || *s == '$')) + do_quote = false; s++; + } int c = *s; if(r) { + if(do_quote) + *r << quote; r->Cat(b, s); - *r << quote; + if(do_quote) + *r << quote; if(c == SQLC_AS) { if(dialect & (MSSQL | PGSQL)) *r << " as "; diff --git a/uppsrc/Sql/SqlStatement.cpp b/uppsrc/Sql/SqlStatement.cpp index 3ee5c7e14..a1671bdfc 100644 --- a/uppsrc/Sql/SqlStatement.cpp +++ b/uppsrc/Sql/SqlStatement.cpp @@ -132,7 +132,7 @@ SqlSelect& SqlSelect::Hint(const char *hint) } SqlSelect& SqlSelect::Get() { - text = "select " + text + SqlCase(ORACLE, "from DUAL")(""); + text = "select " + text + SqlCase(ORACLE, " from DUAL")(""); return *this; } diff --git a/uppsrc/Sql/SqlVal.cpp b/uppsrc/Sql/SqlVal.cpp index 9af9e88e8..15009e173 100644 --- a/uppsrc/Sql/SqlVal.cpp +++ b/uppsrc/Sql/SqlVal.cpp @@ -249,11 +249,9 @@ SqlVal Count(const SqlSet& exp) return SqlFunc("count", exp); } -SqlVal SqlAll() +SqlId SqlAll() { - SqlVal val; - val.SetHigh("*"); - return val; + return SqlId("*"); } SqlVal SqlCountRows() diff --git a/uppsrc/Sql/Sqlexp.h b/uppsrc/Sql/Sqlexp.h index 4ded063d8..33d98497b 100644 --- a/uppsrc/Sql/Sqlexp.h +++ b/uppsrc/Sql/Sqlexp.h @@ -249,7 +249,7 @@ SqlVal Distinct(const SqlVal& exp); SqlSet Distinct(const SqlSet& columns); SqlVal All(const SqlVal& exp); SqlSet All(const SqlSet& columns); -SqlVal SqlAll(); +SqlId SqlAll(); SqlVal Count(const SqlVal& exp); SqlVal Count(const SqlSet& exp); SqlVal SqlCountRows();