Changeset: 7746e71d791e for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=7746e71d791e
Added Files:
        sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.sql
        sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.stable.err
        sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.stable.out
Modified Files:
        monetdb5/modules/atoms/inet.c
        sql/common/sql_types.c
        sql/server/sql_scan.c
        sql/test/BugTracker-2014/Tests/All
        sql/test/testdb/Tests/testdb-dump.stable.out
        sql/test/testdb/Tests/testdb-load.sql
Branch: default
Log Message:

Merge with Oct2014 branch.


diffs (255 lines):

diff --git a/monetdb5/modules/atoms/inet.c b/monetdb5/modules/atoms/inet.c
--- a/monetdb5/modules/atoms/inet.c
+++ b/monetdb5/modules/atoms/inet.c
@@ -142,7 +142,8 @@ INETfromString(str src, int *len, inet *
                goto error;
        }
 
-       return(i);
+       return (int) (endptr - src);
+
 error: /* catch exception: return NULL */
        in_setnil(*retval);
        *len = 0;       /* signal INETnew something went wrong */
diff --git a/sql/common/sql_types.c b/sql/common/sql_types.c
--- a/sql/common/sql_types.c
+++ b/sql/common/sql_types.c
@@ -1432,13 +1432,14 @@ sqltypeinit( sql_allocator *sa)
        sql_create_func(sa, "localtime", "sql", "current_time", NULL, NULL, 
TME, SCALE_NONE);
        sql_create_func(sa, "localtimestamp", "sql", "current_timestamp", NULL, 
NULL, TMESTAMP, SCALE_NONE);
 
-       sql_create_func(sa, "sql_sub", "mtime", "date_sub_msec_interval", DTE, 
SECINT, DTE, SCALE_FIX);
-       sql_create_func(sa, "sql_sub", "mtime", "date_sub_month_interval", DTE, 
MONINT, DTE, SCALE_FIX);
-       sql_create_func(sa, "sql_sub", "mtime", "timestamp_sub_msec_interval", 
TMESTAMP, SECINT, TMESTAMP, SCALE_FIX);
-       sql_create_func(sa, "sql_sub", "mtime", "timestamp_sub_month_interval", 
TMESTAMP, MONINT, TMESTAMP, SCALE_FIX);
-       sql_create_func(sa, "sql_sub", "mtime", "timestamp_sub_msec_interval", 
TMESTAMPTZ, SECINT, TMESTAMPTZ, SCALE_FIX);
-       sql_create_func(sa, "sql_sub", "mtime", "timestamp_sub_month_interval", 
TMESTAMPTZ, MONINT, TMESTAMPTZ, SCALE_FIX);
-       sql_create_func(sa, "sql_sub", "mtime", "time_sub_msec_interval", TME, 
SECINT, TME, SCALE_FIX);
+       sql_create_func(sa, "sql_sub", "mtime", "date_sub_msec_interval", DTE, 
SECINT, DTE, SCALE_NONE);
+       sql_create_func(sa, "sql_sub", "mtime", "date_sub_month_interval", DTE, 
MONINT, DTE, SCALE_NONE);
+       sql_create_func(sa, "sql_sub", "mtime", "timestamp_sub_msec_interval", 
TMESTAMP, SECINT, TMESTAMP, SCALE_NONE);
+       sql_create_func(sa, "sql_sub", "mtime", "timestamp_sub_month_interval", 
TMESTAMP, MONINT, TMESTAMP, SCALE_NONE);
+       sql_create_func(sa, "sql_sub", "mtime", "timestamp_sub_msec_interval", 
TMESTAMPTZ, SECINT, TMESTAMPTZ, SCALE_NONE);
+       sql_create_func(sa, "sql_sub", "mtime", "timestamp_sub_month_interval", 
TMESTAMPTZ, MONINT, TMESTAMPTZ, SCALE_NONE);
+       sql_create_func(sa, "sql_sub", "mtime", "time_sub_msec_interval", TME, 
SECINT, TME, SCALE_NONE);
+       sql_create_func(sa, "sql_sub", "mtime", "time_sub_msec_interval", 
TMETZ, SECINT, TMETZ, SCALE_NONE);
 
        sql_create_func(sa, "sql_sub", "mtime", "diff", DTE, DTE, INT, 
SCALE_FIX);
        sql_create_func(sa, "sql_sub", "mtime", "diff", TMESTAMP, TMESTAMP, 
LNG, SCALE_FIX);
@@ -1451,6 +1452,8 @@ sqltypeinit( sql_allocator *sa)
        sql_create_func(sa, "sql_add", "mtime", "timestamp_add_msec_interval", 
TMESTAMPTZ, SECINT, TMESTAMPTZ, SCALE_NONE);
        sql_create_func(sa, "sql_add", "mtime", "timestamp_add_month_interval", 
TMESTAMPTZ, MONINT, TMESTAMPTZ, SCALE_NONE);
        sql_create_func(sa, "sql_add", "mtime", "time_add_msec_interval", TME, 
SECINT, TME, SCALE_NONE);
+       sql_create_func(sa, "sql_add", "mtime", "time_add_msec_interval", 
TMETZ, SECINT, TMETZ, SCALE_NONE);
+
        sql_create_func(sa, "local_timezone", "mtime", "local_timezone", NULL, 
NULL, SECINT, SCALE_FIX);
 
        sql_create_func(sa, "year", "mtime", "year", DTE, NULL, INT, SCALE_FIX);
@@ -1459,6 +1462,9 @@ sqltypeinit( sql_allocator *sa)
        sql_create_func(sa, "hour", "mtime", "hours", TME, NULL, INT, 
SCALE_FIX);
        sql_create_func(sa, "minute", "mtime", "minutes", TME, NULL, INT, 
SCALE_FIX);
        sql_create_func_res(sa, "second", "mtime", "sql_seconds", TME, NULL, 
DEC, SCALE_NONE, 3);
+       sql_create_func(sa, "hour", "mtime", "hours", TMETZ, NULL, INT, 
SCALE_FIX);
+       sql_create_func(sa, "minute", "mtime", "minutes", TMETZ, NULL, INT, 
SCALE_FIX);
+       sql_create_func_res(sa, "second", "mtime", "sql_seconds", TMETZ, NULL, 
DEC, SCALE_NONE, 3);
 
        sql_create_func(sa, "year", "mtime", "year", TMESTAMP, NULL, INT, 
SCALE_FIX);
        sql_create_func(sa, "month", "mtime", "month", TMESTAMP, NULL, INT, 
SCALE_FIX);
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
@@ -560,19 +560,6 @@ scanner_getc(struct scanner *lc)
                goto error;
        }
 
-       /* if we find a BOM interpret it as a "zero-width non-breaking
-        * space" by just skipping it */
-       if (c == 0xFEFF) {
-               /* shift stuff so we won't "see" this BOM when it's in the
-                * middle of some word */
-               memmove(b->buf + b->pos + 3, b->buf + b->pos, lc->yycur - 3);
-               for (n = 0; n < 3; n++) {
-                       b->buf[b->pos++] = ' ';
-                       lc->yycur--;
-               }
-               return(scanner_getc(lc));
-       }
-
        return c;
 
 error:
diff --git a/sql/test/BugTracker-2014/Tests/All 
b/sql/test/BugTracker-2014/Tests/All
--- a/sql/test/BugTracker-2014/Tests/All
+++ b/sql/test/BugTracker-2014/Tests/All
@@ -65,3 +65,4 @@ ifthenelse.Bug-3629
 order_by_incorrect_error.Bug-3630
 incorrect_floating_point_cast.Bug-3633
 acidity-fail.Bug-3635
+BOM-in-string.Bug-3641
diff --git a/sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.sql 
b/sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.sql
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.sql
@@ -0,0 +1,4 @@
+-- careful: the second query contains the code U+FEFF or ZERO WIDTH
+-- NO-BREAK SPACE, also known as BYTE ORDER MARK
+select '  ';
+select '  ';
diff --git a/sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.stable.err 
b/sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.stable.err
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.stable.err
@@ -0,0 +1,37 @@
+stderr of test 'BOM-in-string.Bug-3641` in directory 
'sql/test/BugTracker-2014` itself:
+
+
+# 09:45:17 >  
+# 09:45:17 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=37240" "--set" 
"mapi_usock=/var/tmp/mtest-27530/.s.monetdb.37240" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2014"
 "--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 09:45:17 >  
+
+# builtin opt  gdk_dbpath = /home/sjoerd/Monet-stable/var/monetdb5/dbfarm/demo
+# builtin opt  gdk_debug = 0
+# builtin opt  gdk_vmtrim = no
+# builtin opt  monet_prompt = >
+# builtin opt  monet_daemon = no
+# builtin opt  mapi_port = 50000
+# builtin opt  mapi_open = false
+# builtin opt  mapi_autosense = false
+# builtin opt  sql_optimizer = default_pipe
+# builtin opt  sql_debug = 0
+# cmdline opt  gdk_nr_threads = 0
+# cmdline opt  mapi_open = true
+# cmdline opt  mapi_port = 37240
+# cmdline opt  mapi_usock = /var/tmp/mtest-27530/.s.monetdb.37240
+# cmdline opt  monet_prompt = 
+# cmdline opt  mal_listing = 2
+# cmdline opt  gdk_dbpath = 
/home/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2014
+# cmdline opt  mal_listing = 0
+# cmdline opt  embedded_r = yes
+# cmdline opt  gdk_debug = 536870922
+
+# 09:45:18 >  
+# 09:45:18 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-27530" "--port=37240"
+# 09:45:18 >  
+
+
+# 09:45:18 >  
+# 09:45:18 >  "Done."
+# 09:45:18 >  
+
diff --git a/sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.stable.out 
b/sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.stable.out
new file mode 100644
--- /dev/null
+++ b/sql/test/BugTracker-2014/Tests/BOM-in-string.Bug-3641.stable.out
@@ -0,0 +1,73 @@
+stdout of test 'BOM-in-string.Bug-3641` in directory 
'sql/test/BugTracker-2014` itself:
+
+
+# 09:47:46 >  
+# 09:47:46 >  "mserver5" "--debug=10" "--set" "gdk_nr_threads=0" "--set" 
"mapi_open=true" "--set" "mapi_port=35607" "--set" 
"mapi_usock=/var/tmp/mtest-27606/.s.monetdb.35607" "--set" "monet_prompt=" 
"--forcemito" "--set" "mal_listing=2" 
"--dbpath=/home/sjoerd/Monet-stable/var/MonetDB/mTests_sql_test_BugTracker-2014"
 "--set" "mal_listing=0" "--set" "embedded_r=yes"
+# 09:47:46 >  
+
+# MonetDB 5 server v11.19.8 (hg id: 9a2cf4c75ba5+)
+# This is an unreleased version
+# Serving database 'mTests_sql_test_BugTracker-2014', using 8 threads
+# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically 
linked
+# Found 7.734 GiB available main-memory.
+# Copyright (c) 1993-July 2008 CWI.
+# Copyright (c) August 2008-2014 MonetDB B.V., all rights reserved
+# Visit http://www.monetdb.org/ for further information
+# Listening for connection requests on mapi:monetdb://gaai.mullender.nl:35607/
+# Listening for UNIX domain connection requests on 
mapi:monetdb:///var/tmp/mtest-27606/.s.monetdb.35607
+# MonetDB/GIS module loaded
+# MonetDB/SQL module loaded
+# MonetDB/R   module loaded
+
+Ready.
+# SQL catalog created, loading sql scripts once
+# loading sql script: 09_like.sql
+# loading sql script: 10_math.sql
+# loading sql script: 11_times.sql
+# loading sql script: 12_url.sql
+# loading sql script: 13_date.sql
+# loading sql script: 14_inet.sql
+# loading sql script: 15_querylog.sql
+# loading sql script: 16_tracelog.sql
+# loading sql script: 19_cluster.sql
+# loading sql script: 20_vacuum.sql
+# loading sql script: 21_dependency_functions.sql
+# loading sql script: 22_clients.sql
+# loading sql script: 23_skyserver.sql
+# loading sql script: 24_zorder.sql
+# loading sql script: 25_debug.sql
+# loading sql script: 26_sysmon.sql
+# loading sql script: 39_analytics.sql
+# loading sql script: 40_geom.sql
+# loading sql script: 40_json.sql
+# loading sql script: 41_jsonstore.sql
+# loading sql script: 45_uuid.sql
+# loading sql script: 46_gsl.sql
+# loading sql script: 75_storagemodel.sql
+# loading sql script: 80_statistics.sql
+# loading sql script: 80_udf.sql
+# loading sql script: 85_bam.sql
+# loading sql script: 90_generator.sql
+# loading sql script: 99_system.sql
+
+# 09:47:46 >  
+# 09:47:46 >  "mclient" "-lsql" "-ftest" "-Eutf-8" "-i" "-e" 
"--host=/var/tmp/mtest-27606" "--port=35607"
+# 09:47:46 >  
+
+#select '  ';
+% .L # table_name
+% single_value # name
+% char # type
+% 2 # length
+[ "  " ]
+#select '  ';
+% .L # table_name
+% single_value # name
+% char # type
+% 5 # length
+[ "  "        ]
+
+# 09:47:46 >  
+# 09:47:46 >  "Done."
+# 09:47:46 >  
+
diff --git a/sql/test/testdb/Tests/testdb-dump.stable.out 
b/sql/test/testdb/Tests/testdb-dump.stable.out
--- a/sql/test/testdb/Tests/testdb-dump.stable.out
+++ b/sql/test/testdb/Tests/testdb-dump.stable.out
@@ -101170,11 +101170,12 @@ CREATE TABLE "testschema"."typestest" (
        "character"      CHAR(1),
        "varchar100"     VARCHAR(100),
        "character10"    CHAR(10),
-       "uuid"           UUID
+       "uuid"           UUID,
+       "inet"           INET
 );
 COPY 2 RECORDS INTO "testschema"."typestest" FROM stdin USING DELIMITERS 
'\t','\n','"';
-true   10      10000   1000000 1000000 10000000000     1e+30   1.00000002e+20  
1.000   123456789       12345.678       3.1415000000000002      3.1415  3.1415  
2009-04-15      24      18      3       1728000.000     108000.000      
120000.000      100000.000      36000.000       6000.000        2000.000        
600.000 100.000 10.000  1995-07-15 07:30:00.000000      1995-07-15 
07:30:00.00000       1995-07-15 07:30:00.000000+00:00        1995-07-15 
07:30:00.00000+00:00 07:30:00        07:30:00.00000  07:30:00+00:00  
07:30:00.00000+00:00    123456  123456  "123456"        "123456"        "x"     
"varchar"       "0123456789"    7d95a9ce-aeb8-4881-9cf7-60b4d55f9e45
-NULL   NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL
+true   10      10000   1000000 1000000 10000000000     1e+30   1.00000002e+20  
1.000   123456789       12345.678       3.1415000000000002      3.1415  3.1415  
2009-04-15      24      18      3       1728000.000     108000.000      
120000.000      100000.000      36000.000       6000.000        2000.000        
600.000 100.000 10.000  1995-07-15 07:30:00.000000      1995-07-15 
07:30:00.00000       1995-07-15 07:30:00.000000+00:00        1995-07-15 
07:30:00.00000+00:00 07:30:00        07:30:00.00000  07:30:00+00:00  
07:30:00.00000+00:00    123456  123456  "123456"        "123456"        "x"     
"varchar"       "0123456789"    7d95a9ce-aeb8-4881-9cf7-60b4d55f9e45    
192.168.10.0/24
+NULL   NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL
 CREATE TABLE "testschema"."keytest1" (
        "key1" INTEGER       NOT NULL,
        "key2" INTEGER       NOT NULL,
diff --git a/sql/test/testdb/Tests/testdb-load.sql 
b/sql/test/testdb/Tests/testdb-load.sql
--- a/sql/test/testdb/Tests/testdb-load.sql
+++ b/sql/test/testdb/Tests/testdb-load.sql
@@ -101149,11 +101149,12 @@ CREATE TABLE "testschema"."typestest" (
        "character"      CHAR(1),
        "varchar100"     VARCHAR(100),
        "character10"    CHAR(10),
-       "uuid"           UUID
+       "uuid"           UUID,
+       "inet"           INET
 );
 COPY 2 RECORDS INTO "testschema"."typestest" FROM stdin USING DELIMITERS 
'\t','\n','"';
-true   10      10000   1000000 1000000 10000000000     1e+30   1.00000002e+20  
1       123456789       12345.678       3.1415000000000002      3.1415  3.1415  
2009-04-15      24      18      3       1728000 108000  120000  100000  36000   
6000    2000    600     100     10      1995-07-15 07:30:00.000000      
1995-07-15 07:30:00.00000       1995-07-15 07:30:00.000000+00:00        
1995-07-15 07:30:00.00000+00:00 07:30:00        07:30:00.00000  07:30:00+00:00  
07:30:00.00000+00:00    123456  123456  "123456"        "123456"        "x"     
"varchar"       "0123456789"    7d95a9ce-aeb8-4881-9cf7-60b4d55f9e45
-NULL   NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL
+true   10      10000   1000000 1000000 10000000000     1e+30   1.00000002e+20  
1       123456789       12345.678       3.1415000000000002      3.1415  3.1415  
2009-04-15      24      18      3       1728000 108000  120000  100000  36000   
6000    2000    600     100     10      1995-07-15 07:30:00.000000      
1995-07-15 07:30:00.00000       1995-07-15 07:30:00.000000+00:00        
1995-07-15 07:30:00.00000+00:00 07:30:00        07:30:00.00000  07:30:00+00:00  
07:30:00.00000+00:00    123456  123456  "123456"        "123456"        "x"     
"varchar"       "0123456789"    7d95a9ce-aeb8-4881-9cf7-60b4d55f9e45    
192.168.10.0/24
+NULL   NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    NULL    
NULL    NULL    NULL    NULL    NULL
 CREATE TABLE "testschema"."keytest1" (
        "key1" INTEGER       NOT NULL,
        "key2" INTEGER       NOT NULL,
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to