Changeset: 18fb2a1f9da7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/18fb2a1f9da7
Added Files:
sql/test/miscellaneous/Tests/special_character_names.test
Modified Files:
clients/odbc/driver/SQLGetInfo.c
clients/odbc/tests/ODBCgetInfo.c
sql/test/miscellaneous/Tests/All
Branch: default
Log Message:
Extending the list of allowed special characters with # and %. These can also
be used in object names.
Added create table and select tests for each of the special characters.
diffs (266 lines):
diff --git a/clients/odbc/driver/SQLGetInfo.c b/clients/odbc/driver/SQLGetInfo.c
--- a/clients/odbc/driver/SQLGetInfo.c
+++ b/clients/odbc/driver/SQLGetInfo.c
@@ -839,7 +839,7 @@ MNDBGetInfo(ODBCDbc *dbc,
sValue = MONETDB_SERVER_NAME;
break;
case SQL_SPECIAL_CHARACTERS:
- sValue = "!$&'()*+,-./:;<=>?@[]^`{|}~";
+ sValue = "!#$%&'()*+,-./:;<=>?@[]^`{|}~";
break;
case SQL_SQL_CONFORMANCE:
nValue = SQL_SC_SQL92_FULL;
diff --git a/clients/odbc/tests/ODBCgetInfo.c b/clients/odbc/tests/ODBCgetInfo.c
--- a/clients/odbc/tests/ODBCgetInfo.c
+++ b/clients/odbc/tests/ODBCgetInfo.c
@@ -960,7 +960,7 @@ const struct {
.info = SQL_SPECIAL_CHARACTERS,
.name = "SQL_SPECIAL_CHARACTERS",
.type = STRING,
- .str = "!$&'()*+,-./:;<=>?@[]^`{|}~",
+ .str = "!#$%&'()*+,-./:;<=>?@[]^`{|}~",
},
{
.info = SQL_SQL_CONFORMANCE,
diff --git a/sql/test/miscellaneous/Tests/All b/sql/test/miscellaneous/Tests/All
--- a/sql/test/miscellaneous/Tests/All
+++ b/sql/test/miscellaneous/Tests/All
@@ -28,3 +28,4 @@ analyze_test
blobs
temp_tables
table_alias_on_cte
+special_character_names
diff --git a/sql/test/miscellaneous/Tests/special_character_names.test
b/sql/test/miscellaneous/Tests/special_character_names.test
new file mode 100644
--- /dev/null
+++ b/sql/test/miscellaneous/Tests/special_character_names.test
@@ -0,0 +1,229 @@
+# test usage of special characters in object names
+# ODBC function SQLGetInfo(SQL_SPECIAL_CHARACTERS) returns
"!#$%&'()*+,-./:;<=>?@[]^`{|}~"
+
+statement ok
+start transaction
+
+statement ok
+create table "a!1" ("a!1" int )
+
+query I
+select "a!1" from "a!1"
+----
+
+statement ok
+create table "a#1" ("a#1" int )
+
+# next query gives Mtest.py execution error: too many values to unpack
(expected 2)
+# but it works fine when issued via mclient or JDBC or ODBC
+# query I
+# select "a#1" from "a#1"
+# ----
+
+statement ok
+create table "a$1" ("a$1" int )
+
+query I
+select "a$1" from "a$1"
+----
+
+statement ok
+create table "a%1" ("a%1" int )
+
+query I
+select "a%1" from "a%1"
+----
+
+statement ok
+create table "a&1" ("a&1" int )
+
+query I
+select "a&1" from "a&1"
+----
+
+statement ok
+create table "a'1" ("a'1" int )
+
+query I
+select "a'1" from "a'1"
+----
+
+statement ok
+create table "a(1" ("a(1" int )
+
+query I
+select "a(1" from "a(1"
+----
+
+statement ok
+create table "a)1" ("a)1" int )
+
+query I
+select "a)1" from "a)1"
+----
+
+statement ok
+create table "a*1" ("a*1" int )
+
+query I
+select "a*1" from "a*1"
+----
+
+statement ok
+create table "a+1" ("a+1" int )
+
+query I
+select "a+1" from "a+1"
+----
+
+statement ok
+create table "a,1" ("a,1" int )
+
+query I
+select "a,1" from "a,1"
+----
+
+statement ok
+create table "a-1" ("a-1" int )
+
+query I
+select "a-1" from "a-1"
+----
+
+statement ok
+create table "a.1" ("a.1" int )
+
+query I
+select "a.1" from "a.1"
+----
+
+statement ok
+create table "a/1" ("a/1" int )
+
+query I
+select "a/1" from "a/1"
+----
+
+statement ok
+create table "a:1" ("a:1" int )
+
+query I
+select "a:1" from "a:1"
+----
+
+statement ok
+create table "a;1" ("a;1" int )
+
+query I
+select "a;1" from "a;1"
+----
+
+statement ok
+create table "a<1" ("a<1" int )
+
+query I
+select "a<1" from "a<1"
+----
+
+statement ok
+create table "a=1" ("a=1" int )
+
+query I
+select "a=1" from "a=1"
+----
+
+statement ok
+create table "a>1" ("a>1" int )
+
+query I
+select "a>1" from "a>1"
+----
+
+statement ok
+create table "a?1" ("a?1" int )
+
+query I
+select "a?1" from "a?1"
+----
+
+statement ok
+create table "a@1" ("a@1" int )
+
+query I
+select "a@1" from "a@1"
+----
+
+statement ok
+create table "a[1" ("a[1" int )
+
+query I
+select "a[1" from "a[1"
+----
+
+statement ok
+create table "a]1" ("a]1" int )
+
+query I
+select "a]1" from "a]1"
+----
+
+statement ok
+create table "a^1" ("a^1" int )
+
+query I
+select "a^1" from "a^1"
+----
+
+statement ok
+create table "a_1" ("a_1" int )
+
+query I
+select "a_1" from "a_1"
+----
+
+statement ok
+create table "a`1" ("a`1" int )
+
+query I
+select "a`1" from "a`1"
+----
+
+statement ok
+create table "a{1" ("a{1" int )
+
+query I
+select "a{1" from "a{1"
+----
+
+statement ok
+create table "a|1" ("a|1" int )
+
+query I
+select "a|1" from "a|1"
+----
+
+statement ok
+create table "a}1" ("a}1" int )
+
+query I
+select "a}1" from "a}1"
+----
+
+statement ok
+create table "a~1" ("a~1" int )
+
+query I
+select "a~1" from "a~1"
+----
+
+# the " character can be used but only when doubled
+statement ok
+create table "a""1" ("a""1" int )
+
+query I
+select "a""1" from "a""1"
+----
+
+statement ok
+rollback
+
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]