From 1f14eecfed1303d5d7bf5febcba29e06c2d19d9e Mon Sep 17 00:00:00 2001 From: Constantin Michael Date: Wed, 26 Oct 2011 10:05:25 +0200 Subject: Quote schema object identifiers for Oracle where necessary Oracle converts all alphabetical characters in unquoted schema object identifiers to uppercase. This behaviour cannot be disabled. --- common/view/driver.cxx | 42 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 39 insertions(+), 3 deletions(-) (limited to 'common/view/driver.cxx') diff --git a/common/view/driver.cxx b/common/view/driver.cxx index 2ede99c..b671e46 100644 --- a/common/view/driver.cxx +++ b/common/view/driver.cxx @@ -14,6 +14,7 @@ #include #include +#include // DATABASE_XXX #include "test.hxx" #include "test-odb.hxx" @@ -58,7 +59,8 @@ view2_test (const auto_ptr& db) } { - result r (db->query ("age < 31")); + result r (db->query (query::age + " < 31")); + iterator i (r.begin ()); assert (i != r.end ()); assert (i->count == 2); @@ -85,7 +87,10 @@ view4_test (const auto_ptr& db) transaction t (db->begin ()); { - result r (db->query ("age > 30 ORDER BY age")); + result r (db->query ( + (query::person::age > 30) + + "ORDER BY " + + query::person::age)); iterator i (r.begin ()); @@ -102,7 +107,9 @@ view4_test (const auto_ptr& db) { result r (db->query ( - (query::person::age > 30) + "ORDER BY age")); + (query::person::age > 30) + + "ORDER BY " + + query::person::age)); iterator i (r.begin ()); @@ -229,12 +236,20 @@ main (int argc, char* argv[]) } { +#ifndef DATABASE_ORACLE result r (db->query ("ORDER BY age")); +#else + result r (db->query ("ORDER BY \"age\"")); +#endif assert (size (r) == 4); } { +#ifndef DATABASE_ORACLE result r (db->query ("age < 31 ORDER BY age")); +#else + result r (db->query ("\"age\" < 31 ORDER BY \"age\"")); +#endif view1_check (r); } @@ -277,7 +292,12 @@ main (int argc, char* argv[]) { transaction t (db->begin ()); +#ifndef DATABASE_ORACLE result r (db->query ("first = " + query::_val ("Jane"))); +#else + result r (db->query ("\"first\" = " + query::_val ("Jane"))); +#endif + result::iterator i (r.begin ()); assert (i != r.end ()); @@ -298,11 +318,19 @@ main (int argc, char* argv[]) { transaction t (db->begin ()); +#ifndef DATABASE_ORACLE result r ( db->query ( "SELECT first, last, age " "FROM t_view_person " "WHERE age < 31 ORDER BY age")); +#else + result r ( + db->query ( + "SELECT \"first\", \"last\", \"age\" " + "FROM \"t_view_person\" " + "WHERE \"age\" < 31 ORDER BY \"age\"")); +#endif view1_check (r); @@ -320,7 +348,11 @@ main (int argc, char* argv[]) transaction t (db->begin ()); { +#ifndef DATABASE_ORACLE result r (db->query ("age < 31 ORDER BY age")); +#else + result r (db->query ("\"age\" < 31 ORDER BY \"age\"")); +#endif view1_check (r); } @@ -438,7 +470,11 @@ main (int argc, char* argv[]) db, odb::query::employer::name == "Simple Tech, Inc"); view6_test ( +#ifndef DATABASE_ORACLE db, "e.name = " + odb::query::_val ("Simple Tech, Inc")); +#else + db, "\"e\".\"name\" = " + odb::query::_val ("Simple Tech, Inc")); +#endif // view7 // -- cgit v1.1