Changeset: 67cd988ae16d for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=67cd988ae16d
Modified Files:
sql/server/sql_scan.c
sql/test/ADT2006/Tests/sander.stable.err
sql/test/bugs/Tests/crash_order_by.stable.out
sql/test/bugs/Tests/object_name-bug-sf-985242.stable.err
sql/test/bugs/Tests/object_name-bug-sf-985242.stable.out
sql/test/bugs/Tests/simple_view.stable.out
sql/test/bugs/Tests/subselect_multiple_unionall_where_1=1-bug-sf-1005596.stable.out
sql/test/bugs/object_name-bug-sf-985242.sql
sql/test/create_in_schema.sql
Branch: default
Log Message:
Merge with Jan2014 branch.
diffs (201 lines):
diff --git a/sql/server/sql_scan.c b/sql/server/sql_scan.c
--- a/sql/server/sql_scan.c
+++ b/sql/server/sql_scan.c
@@ -911,18 +911,24 @@ tokenize(mvc * c, int cur)
}
}
+/* SQL 'quoted' idents consist of a set of any character of
+ * the source language character set other than a 'quote'
+ *
+ * MonetDB has 2 restrictions:
+ * 1 we disallow '%' as the first character.
+ * 2 the length is reduced to 1024 characters
+ */
static int
valid_ident(char *s, char *dst)
{
int escaped = 0;
int p = 0;
- if (*s != '_' && !(isascii((int) *s) && isalnum((int) *s)) && *s != ' '
&&
- *s != '(' && *s != ')')
+ if (*s == '%')
return 0;
/* do unescaping in the loop */
while (*s && (*s != '"' || escaped)) {
- if (*s == '\\') {
+ if (*s == '\\' || (*s == '"' && s[1] == '"')) {
escaped = !escaped;
if (!escaped) {
dst[p++] = *s;
@@ -930,9 +936,6 @@ valid_ident(char *s, char *dst)
} else if (*s == '"' && escaped) {
escaped = 0;
dst[p++] = *s;
- } else if (*s != '_' && !(isascii((int) *s) && isalnum((int)
*s)) && *s != ' ' &&
- *s != '(' && *s != ')') {
- return 0;
} else {
escaped = 0;
dst[p++] = *s;
@@ -989,7 +992,6 @@ sql_get_next_token(YYSTYPE *yylval, void
lc->rs->buf[lc->rs->pos+lc->yycur- 1] = 0;
if (quote == '"') {
- /* Todo check if what valid 'quoted' idents are */
if (valid_ident(yylval->sval+1,str)) {
token = IDENT;
} else {
diff --git a/sql/test/ADT2006/Tests/sander.stable.err
b/sql/test/ADT2006/Tests/sander.stable.err
--- a/sql/test/ADT2006/Tests/sander.stable.err
+++ b/sql/test/ADT2006/Tests/sander.stable.err
@@ -10,19 +10,18 @@ stderr of test 'sander` in directory 'sq
# 11:28:18 > Mtimeout -timeout 60 MapiClient -lsql -umonetdb -Pmonetdb
--host=localhost --port=32149 < sander.sql
# 11:28:18 >
-MAPI = (monetdb) /var/tmp/mtest-23209/.s.monetdb.33225
+MAPI = (monetdb) /var/tmp/mtest-12878/.s.monetdb.32234
QUERY = insert into suspect (name, picture_uri, notes,
victim_name) values ("Dr. Thomas Neill Cream ",
"http://blabla/toolong", "did commit murders, but by
poisoning", "");
-ERROR = !Invalid identifier 'Dr. Thomas Neill Cream '
-MAPI = (monetdb) /var/tmp/mtest-23209/.s.monetdb.33225
+ERROR = !SELECT: identifier 'Dr. Thomas Neill Cream ' unknown
+MAPI = (monetdb) /var/tmp/mtest-12878/.s.monetdb.32234
QUERY = insert into suspect (name, picture_uri, notes,
victim_name) values ("Sander Borsboom", "lives
centuries later, so not much chance", "blah.jpg",
"noone (yet :D)");
-ERROR = !Invalid identifier 'lives
- !centuries later, so not much chance'
+ERROR = !SELECT: identifier 'Sander Borsboom' unknown
# 11:28:19 >
# 11:28:19 > Done.
diff --git a/sql/test/bugs/Tests/crash_order_by.stable.out
b/sql/test/bugs/Tests/crash_order_by.stable.out
--- a/sql/test/bugs/Tests/crash_order_by.stable.out
+++ b/sql/test/bugs/Tests/crash_order_by.stable.out
@@ -29,15 +29,15 @@ Ready.
% row, single_value # name
% int, char # type
% 2, 1 # length
+[ 31, "1" ]
+[ 47, "1" ]
+[ 14, "1" ]
+[ 5, "1" ]
[ 32, "1" ]
-[ 48, "1" ]
-[ 15, "1" ]
-[ 6, "1" ]
-[ 33, "1" ]
-[ 12, "1" ]
-[ 9, "1" ]
-[ 5, "1" ]
-[ 2, "1" ]
+[ 11, "1" ]
+[ 8, "1" ]
+[ 4, "1" ]
+[ 1, "1" ]
[ 18, "1" ]
# 23:16:56 >
diff --git a/sql/test/bugs/Tests/object_name-bug-sf-985242.stable.err
b/sql/test/bugs/Tests/object_name-bug-sf-985242.stable.err
--- a/sql/test/bugs/Tests/object_name-bug-sf-985242.stable.err
+++ b/sql/test/bugs/Tests/object_name-bug-sf-985242.stable.err
@@ -10,15 +10,6 @@ stderr of test 'object_name-bug-sf-98524
# 14:52:48 > Mtimeout -timeout 60 MapiClient --language=sql -u monetdb -P
monetdb --host=stem --port=54903 < object_name-bug-sf-985242.sql
# 14:52:48 >
-MAPI = (monetdb) /var/tmp/mtest-23209/.s.monetdb.33225
-QUERY = create table "\t" (id int);
-ERROR = !Invalid identifier '\t'
-MAPI = (monetdb) /var/tmp/mtest-23209/.s.monetdb.33225
-QUERY = create table x ("\t" int);
-ERROR = !Invalid identifier '\t'
-MAPI = (monetdb) /var/tmp/mtest-23209/.s.monetdb.33225
-QUERY = select * from x;
-ERROR = !SELECT: no such table 'x'
# 14:52:48 >
# 14:52:48 > Done.
diff --git a/sql/test/bugs/Tests/object_name-bug-sf-985242.stable.out
b/sql/test/bugs/Tests/object_name-bug-sf-985242.stable.out
--- a/sql/test/bugs/Tests/object_name-bug-sf-985242.stable.out
+++ b/sql/test/bugs/Tests/object_name-bug-sf-985242.stable.out
@@ -13,13 +13,23 @@ stdout of test 'object_name-bug-sf-98524
Ready.
+# 14:34:15 >
+# 14:34:15 > "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e"
"--host=/var/tmp/mtest-1382" "--port=39275"
+# 14:34:15 >
-# 12:52:02 >
-# 12:52:02 > Mtimeout -timeout 60 MapiClient -lsql -u monetdb -P monetdb
--host=localhost --port=45579 < object_name-bug-sf-985242.sql
-# 12:52:02 >
+#create table "\t" (id int);
+#drop table "\t";
+#create table " " (id int);
+#drop table " ";
+#create table x ("\t" int);
+#select * from x;
+% sys.x # table_name
+% t # name
+% int # type
+% 1 # length
+#drop table "x";
+# 14:34:15 >
+# 14:34:15 > "Done."
+# 14:34:15 >
-# 12:52:02 >
-# 12:52:02 > Done.
-# 12:52:02 >
-
diff --git a/sql/test/bugs/Tests/simple_view.stable.out
b/sql/test/bugs/Tests/simple_view.stable.out
--- a/sql/test/bugs/Tests/simple_view.stable.out
+++ b/sql/test/bugs/Tests/simple_view.stable.out
@@ -69,7 +69,6 @@ Ready.
[ "statistics", "str", 1 ]
[ "systemfunctions", "str", 1 ]
[ "test_update", "str", 1 ]
-[ " ", "str", 1 ]
[ "pwprijs", "str", 1 ]
[ "foo1345861", "str", 1 ]
[ "urlparts", "str", 1 ]
diff --git
a/sql/test/bugs/Tests/subselect_multiple_unionall_where_1=1-bug-sf-1005596.stable.out
b/sql/test/bugs/Tests/subselect_multiple_unionall_where_1=1-bug-sf-1005596.stable.out
---
a/sql/test/bugs/Tests/subselect_multiple_unionall_where_1=1-bug-sf-1005596.stable.out
+++
b/sql/test/bugs/Tests/subselect_multiple_unionall_where_1=1-bug-sf-1005596.stable.out
@@ -72,7 +72,6 @@ Ready.
% TABLE_CAT, TABLE_SCHEM, TABLE_NAME, TABLE_TYPE, REMARKS,
TYPE_CAT, TYPE_SCHEM, TYPE_NAME, SELF_REFERENCING_COL_NAME,
REF_GENERATION # name
% char, varchar, varchar, char, char, char, char,
char, char, char # type
% 4, 3, 11, 20, 0, 0, 0, 0, 5, 6 #
length
-[ "demo", "sys", " ", "TABLE", "", NULL, NULL, NULL,
"rowid", "SYSTEM" ]
[ "demo", "sys", "test_update", "TABLE", "", NULL, NULL,
NULL, "rowid", "SYSTEM" ]
# 12:52:40 >
diff --git a/sql/test/bugs/object_name-bug-sf-985242.sql
b/sql/test/bugs/object_name-bug-sf-985242.sql
--- a/sql/test/bugs/object_name-bug-sf-985242.sql
+++ b/sql/test/bugs/object_name-bug-sf-985242.sql
@@ -1,4 +1,7 @@
create table "\t" (id int);
+drop table "\t";
create table " " (id int);
+drop table " ";
create table x ("\t" int);
select * from x;
+drop table "x";
diff --git a/sql/test/create_in_schema.sql b/sql/test/create_in_schema.sql
--- a/sql/test/create_in_schema.sql
+++ b/sql/test/create_in_schema.sql
@@ -10,7 +10,7 @@ create table bla.bla3(id int);
select * from bla3; -- should fail
select * from bla.bla3;
-create temporary table sys.bla4(id int);
+create temporary table tmp.bla4(id int);
select * from bla4;
create table tmp.bla5(id int);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list