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
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to