MonetDB: analytics - Merge with default.

2018-11-23 Thread Pedro Ferreira
Changeset: 940455578dfc for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=940455578dfc
Added Files:
sql/test/BugTracker-2018/Tests/alter-sequence-subquery.Bug-6657.sql

sql/test/BugTracker-2018/Tests/alter-sequence-subquery.Bug-6657.stable.err

sql/test/BugTracker-2018/Tests/alter-sequence-subquery.Bug-6657.stable.out
sql/test/BugTracker-2018/Tests/grant-role-not-idempotent.Bug-6660.py

sql/test/BugTracker-2018/Tests/grant-role-not-idempotent.Bug-6660.stable.err

sql/test/BugTracker-2018/Tests/grant-role-not-idempotent.Bug-6660.stable.out

sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.stable.err

sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.stable.out

sql/test/BugTracker-2018/Tests/procedure-create-table.Bug-6604.stable.err

sql/test/BugTracker-2018/Tests/procedure-create-table.Bug-6604.stable.out
sql/test/BugTracker-2018/Tests/quantile-crash.Bug-6658.sql
sql/test/BugTracker-2018/Tests/quantile-crash.Bug-6658.stable.err
sql/test/BugTracker-2018/Tests/quantile-crash.Bug-6658.stable.out

sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-coalesce-error-message.Bug-6608.stable.err

sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-coalesce-error-message.Bug-6608.stable.out.int128
sql/test/testdb-reload/Tests/All
sql/test/testdb-reload/Tests/reload.py
sql/test/testdb-reload/Tests/reload.stable.err
sql/test/testdb-reload/Tests/reload.stable.out
sql/test/testdb-reload/Tests/reload.timeout
sql/test/testdb/Tests/dump-nogeom.reqtests
sql/test/testdb/Tests/dump-nogeom.sql
sql/test/testdb/Tests/dump-nogeom.stable.err
sql/test/testdb/Tests/dump-nogeom.stable.out
sql/test/testdb/Tests/dump.reqtests
sql/test/testdb/Tests/dump.sql
sql/test/testdb/Tests/dump.stable.err
sql/test/testdb/Tests/dump.stable.out
sql/test/testdb/Tests/dump.timeout
sql/test/testdb/Tests/load-geom.reqtests
sql/test/testdb/Tests/load-geom.sql
sql/test/testdb/Tests/load-geom.stable.err
sql/test/testdb/Tests/load-geom.stable.out
sql/test/testdb/Tests/load.sql
sql/test/testdb/Tests/load.stable.err
sql/test/testdb/Tests/load.stable.out
sql/test/testdb/Tests/load.timeout
sql/test/testdb/Tests/package-hge.py
sql/test/testdb/Tests/package-hge.stable.err
sql/test/testdb/Tests/package-hge.stable.out.int128
sql/test/testdb/Tests/package.py
sql/test/testdb/Tests/package.reqtests
sql/test/testdb/Tests/package.stable.err
sql/test/testdb/Tests/package.stable.out
Removed Files:
sql/test/testdb/Tests/testdb-dump.reqtests
sql/test/testdb/Tests/testdb-dump.sql
sql/test/testdb/Tests/testdb-dump.stable.err
sql/test/testdb/Tests/testdb-dump.stable.out
sql/test/testdb/Tests/testdb-dump.timeout
sql/test/testdb/Tests/testdb-load.sql
sql/test/testdb/Tests/testdb-load.stable.err
sql/test/testdb/Tests/testdb-load.stable.out
sql/test/testdb/Tests/testdb-load.timeout
sql/test/testdb/Tests/testdb-package-hge.py
sql/test/testdb/Tests/testdb-package-hge.stable.err
sql/test/testdb/Tests/testdb-package-hge.stable.out.int128
sql/test/testdb/Tests/testdb-package.py
sql/test/testdb/Tests/testdb-package.reqtests
sql/test/testdb/Tests/testdb-package.stable.err
sql/test/testdb/Tests/testdb-package.stable.out
Modified Files:
clients/Tests/exports.stable.out
clients/mapiclient/dump.c
clients/mapiclient/mclient.c
clients/mapiclient/msqldump.c
gdk/ChangeLog
gdk/gdk.h
gdk/gdk_aggr.c
gdk/gdk_atoms.c
gdk/gdk_atoms.h
gdk/gdk_batop.c
gdk/gdk_bbp.c
gdk/gdk_calc.c
gdk/gdk_private.h
gdk/gdk_storage.c
gdk/gdk_string.c
gdk/gdk_system.c
gdk/gdk_utils.c
gdk/gdk_value.c
geom/monetdb5/geom.c
geom/monetdb5/geom.h
geom/sql/conformance/Tests/T13.stable.out
geom/sql/conformance/Tests/T14.stable.out
geom/sql/conformance/Tests/T17.stable.out
geom/sql/conformance/Tests/T18.stable.out
geom/sql/conformance/Tests/T23.stable.out
geom/sql/conformance/Tests/T24.stable.out
geom/sql/conformance/Tests/T27.stable.out
geom/sql/conformance/Tests/T29.stable.out
geom/sql/conformance/Tests/T31.stable.out
geom/sql/conformance/Tests/T34.stable.out
geom/sql/conformance/Tests/T47.stable.out
geom/sql/conformance/Tests/T48.stable.out
geom/sql/conformance/Tests/T49.stable.out
geom/sql/conformance/Tests/T50.stable.out
geom/sql/conformance/Tests/T52.stable.out
geom/sql/conformance/Tests/T8.stable.out
   

MonetDB: merge-statements - Updated mhelp and test.

2018-11-23 Thread Pedro Ferreira
Changeset: 76844879b9c5 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=76844879b9c5
Modified Files:
clients/mapiclient/mhelp.c
sql/test/rename/Tests/All
sql/test/rename/Tests/rename07.sql
sql/test/rename/Tests/rename07.stable.out
Branch: merge-statements
Log Message:

Updated mhelp and test.


diffs (114 lines):

diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c
--- a/clients/mapiclient/mhelp.c
+++ b/clients/mapiclient/mhelp.c
@@ -56,7 +56,8 @@ SQLhelp sqlhelp[] = {
 "ALTER TABLE [ IF EXISTS ] qname DROP [ COLUMN ] ident [ RESTRICT | 
CASCADE ]\n"
 "ALTER TABLE [ IF EXISTS ] qname DROP CONSTRAINT ident [ RESTRICT | 
CASCADE ]\n"
 "ALTER TABLE [ IF EXISTS ] qname SET { { READ | INSERT } ONLY | READ 
WRITE }\n"
-"ALTER TABLE [ IF EXISTS ] qname RENAME TO ident",
+"ALTER TABLE [ IF EXISTS ] qname RENAME TO ident\n"
+"ALTER TABLE [ IF EXISTS ] qname SET SCHEMA ident",
 "column_def,table_constraint",
 "See also https://www.monetdb.org/Documentation/SQLreference/Alter"},
{"ALTER MERGE TABLE",
diff --git a/sql/test/rename/Tests/All b/sql/test/rename/Tests/All
--- a/sql/test/rename/Tests/All
+++ b/sql/test/rename/Tests/All
@@ -5,3 +5,4 @@ rename03
 rename04
 rename05
 rename06
+rename07
diff --git a/sql/test/rename/Tests/rename07.sql 
b/sql/test/rename/Tests/rename07.sql
--- a/sql/test/rename/Tests/rename07.sql
+++ b/sql/test/rename/Tests/rename07.sql
@@ -4,13 +4,25 @@ create schema "newtables";
 create table "oldtables"."atable" (a int);
 insert into "oldtables"."atable" values (1);
 
-select "a" from "oldtables"."atable";
+select "a" from "oldtables"."atable" where false;
 select "a" from "newtables"."atable"; --error
 
+select "ss"."name" from "sys"."tables" "tt" inner join "sys"."schemas" "ss" on 
"tt"."schema_id" = "ss"."id" where "tt"."name" = 'atable';
 alter table "oldtables"."atable" set schema "newtables";
+select "ss"."name" from "sys"."tables" "tt" inner join "sys"."schemas" "ss" on 
"tt"."schema_id" = "ss"."id" where "tt"."name" = 'atable';
 
 select "a" from "oldtables"."atable"; --error
-select "a" from "newtables"."atable";
+select "a" from "newtables"."atable" where false;
+
+start transaction;
+select "ss"."name" from "sys"."tables" "tt" inner join "sys"."schemas" "ss" on 
"tt"."schema_id" = "ss"."id" where "tt"."name" = 'atable';
+alter table "newtables"."atable" set schema "oldtables";
+select "ss"."name" from "sys"."tables" "tt" inner join "sys"."schemas" "ss" on 
"tt"."schema_id" = "ss"."id" where "tt"."name" = 'atable';
+select "a" from "oldtables"."atable" where false;
+rollback;
+
+select "ss"."name" from "sys"."tables" "tt" inner join "sys"."schemas" "ss" on 
"tt"."schema_id" = "ss"."id" where "tt"."name" = 'atable';
+select "a" from "newtables"."atable" where false;
 
 drop table "newtables"."atable";
 drop schema "oldtables";
diff --git a/sql/test/rename/Tests/rename07.stable.out 
b/sql/test/rename/Tests/rename07.stable.out
--- a/sql/test/rename/Tests/rename07.stable.out
+++ b/sql/test/rename/Tests/rename07.stable.out
@@ -76,14 +76,55 @@ Ready.
 % a # name
 % int # type
 % 1 # length
-[ 1]
+#select "ss"."name" from "sys"."tables" "tt" inner join "sys"."schemas" "ss" 
on "tt"."schema_id" = "ss"."id" where "tt"."name" = 'atable';
+% .ss # table_name
+% name # name
+% varchar # type
+% 9 # length
+[ "oldtables"  ]
 #alter table "oldtables"."atable" set schema "newtables";
-#select "a" from "newtables"."atable";
+#select "ss"."name" from "sys"."tables" "tt" inner join "sys"."schemas" "ss" 
on "tt"."schema_id" = "ss"."id" where "tt"."name" = 'atable';
+% .ss # table_name
+% name # name
+% varchar # type
+% 9 # length
+[ "newtables"  ]
+#select "a" from "newtables"."atable" where false;
 % newtables.atable # table_name
 % a # name
 % int # type
 % 1 # length
-[ 1]
+#start transaction;
+#select "ss"."name" from "sys"."tables" "tt" inner join "sys"."schemas" "ss" 
on "tt"."schema_id" = "ss"."id" where "tt"."name" = 'atable';
+% .ss # table_name
+% name # name
+% varchar # type
+% 9 # length
+[ "newtables"  ]
+#alter table "newtables"."atable" set schema "oldtables";
+#select "ss"."name" from "sys"."tables" "tt" inner join "sys"."schemas" "ss" 
on "tt"."schema_id" = "ss"."id" where "tt"."name" = 'atable';
+% .ss # table_name
+% name # name
+% varchar # type
+% 9 # length
+[ "oldtables"  ]
+#select "a" from "oldtables"."atable" where false;
+% oldtables.atable # table_name
+% a # name
+% int # type
+% 1 # length
+#rollback;
+#select "ss"."name" from "sys"."tables" "tt" inner join "sys"."schemas" "ss" 
on "tt"."schema_id" = "ss"."id" where "tt"."name" = 'atable';
+% .ss # table_name
+% name # name
+% varchar # type
+% 9 # length
+[ "newtables"  ]
+#select "a" from "newtables"."atable" where false;
+% newtables.atable # table_name
+% a # name
+% int # type
+% 1 # length
 #drop table "newtables"."atable";
 #drop schema "oldtables";
 #drop schema 

MonetDB: merge-statements - Merge with default

2018-11-23 Thread Pedro Ferreira
Changeset: 0734c0d46e63 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0734c0d46e63
Added Files:
sql/test/BugTracker-2018/Tests/grant-role-not-idempotent.Bug-6660.py

sql/test/BugTracker-2018/Tests/grant-role-not-idempotent.Bug-6660.stable.err

sql/test/BugTracker-2018/Tests/grant-role-not-idempotent.Bug-6660.stable.out

sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.stable.err

sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.stable.out

sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-coalesce-error-message.Bug-6608.stable.err

sql/test/BugTracker-2018/Tests/sqlitelogictest-groupby-coalesce-error-message.Bug-6608.stable.out.int128
sql/test/testdb-reload/Tests/All
sql/test/testdb-reload/Tests/reload.py
sql/test/testdb-reload/Tests/reload.stable.err
sql/test/testdb-reload/Tests/reload.stable.out
sql/test/testdb-reload/Tests/reload.timeout
sql/test/testdb/Tests/dump-nogeom.reqtests
sql/test/testdb/Tests/dump-nogeom.sql
sql/test/testdb/Tests/dump-nogeom.stable.err
sql/test/testdb/Tests/dump-nogeom.stable.out
sql/test/testdb/Tests/load-geom.reqtests
sql/test/testdb/Tests/load-geom.sql
sql/test/testdb/Tests/load-geom.stable.err
sql/test/testdb/Tests/load-geom.stable.out
Modified Files:
clients/Tests/exports.stable.out
clients/mapiclient/dump.c
clients/mapiclient/mclient.c
clients/mapiclient/msqldump.c
gdk/ChangeLog
gdk/gdk.h
gdk/gdk_atoms.c
gdk/gdk_atoms.h
gdk/gdk_batop.c
gdk/gdk_bbp.c
gdk/gdk_calc.c
gdk/gdk_private.h
gdk/gdk_storage.c
gdk/gdk_string.c
gdk/gdk_system.c
gdk/gdk_utils.c
gdk/gdk_value.c
geom/monetdb5/geom.c
geom/monetdb5/geom.h
geom/sql/conformance/Tests/T13.stable.out
geom/sql/conformance/Tests/T14.stable.out
geom/sql/conformance/Tests/T17.stable.out
geom/sql/conformance/Tests/T18.stable.out
geom/sql/conformance/Tests/T23.stable.out
geom/sql/conformance/Tests/T24.stable.out
geom/sql/conformance/Tests/T27.stable.out
geom/sql/conformance/Tests/T29.stable.out
geom/sql/conformance/Tests/T31.stable.out
geom/sql/conformance/Tests/T34.stable.out
geom/sql/conformance/Tests/T47.stable.out
geom/sql/conformance/Tests/T48.stable.out
geom/sql/conformance/Tests/T49.stable.out
geom/sql/conformance/Tests/T50.stable.out
geom/sql/conformance/Tests/T52.stable.out
geom/sql/conformance/Tests/T8.stable.out
geom/sql/functions/Tests/ST_AsEWKT.stable.out
geom/sql/functions/Tests/ST_AsText.stable.out
geom/sql/pg_regression/Tests/boundary.stable.out
geom/sql/pg_regression/Tests/delaunaytriangles.stable.out
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.err
monetdb5/extras/mal_optimizer_template/Tests/opt_sql_append.stable.out
monetdb5/mal/Tests/tst1200.stable.out
monetdb5/mal/Tests/tst1205.stable.out
monetdb5/mal/mal_atom.c
monetdb5/mal/mal_instruction.c
monetdb5/mal/mal_parser.c
monetdb5/mal/mal_profiler.c
monetdb5/modules/atoms/blob.c
monetdb5/modules/atoms/blob.h
monetdb5/modules/atoms/color.c
monetdb5/modules/atoms/color.h
monetdb5/modules/atoms/identifier.c
monetdb5/modules/atoms/inet.c
monetdb5/modules/atoms/json.c
monetdb5/modules/atoms/json.h
monetdb5/modules/atoms/mtime.c
monetdb5/modules/atoms/mtime.h
monetdb5/modules/atoms/url.c
monetdb5/modules/atoms/url.h
monetdb5/modules/atoms/uuid.c
monetdb5/modules/atoms/xml.c
monetdb5/modules/atoms/xml.h
monetdb5/modules/kernel/bat5.c
monetdb5/modules/mal/mal_io.c
monetdb5/modules/mal/remote.c
monetdb5/modules/mal/tablet.c
rpm.mk.in
sql/ChangeLog
sql/backends/monet5/UDF/capi/capi.c
sql/backends/monet5/UDF/pyapi/conversion.c
sql/backends/monet5/UDF/pyapi/convert_loops.h
sql/backends/monet5/UDF/pyapi/type_conversion.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_cast.c
sql/backends/monet5/sql_cat.c
sql/backends/monet5/sql_result.c
sql/backends/monet5/sql_result.h
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_statistics.c
sql/backends/monet5/sql_upgrades.c
sql/backends/monet5/vaults/bam/Tests/query2.1.stable.out
sql/backends/monet5/vaults/bam/Tests/query2.10.stable.out
sql/backends/monet5/vaults/bam/Tests/query2.2.stable.out
sql/backends/monet5/vaults/bam/Tests/query2.2.stable.out.int128
sql/backends/monet5/wlr.c

MonetDB: merge-statements - Added alter schema of table statemen...

2018-11-23 Thread Pedro Ferreira
Changeset: d0f873006ea6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d0f873006ea6
Added Files:
sql/test/rename/Tests/rename07.sql
sql/test/rename/Tests/rename07.stable.err
sql/test/rename/Tests/rename07.stable.out
Modified Files:
sql/server/rel_schema.c
sql/server/rel_semantic.c
sql/server/sql_parser.h
sql/server/sql_parser.y
Branch: merge-statements
Log Message:

Added alter schema of table statement, by re-creating the table in the new 
schema.

ALTER TABLE "oldschema"."table" SET SCHEMA "newschema";


diffs (294 lines):

diff --git a/sql/server/rel_schema.c b/sql/server/rel_schema.c
--- a/sql/server/rel_schema.c
+++ b/sql/server/rel_schema.c
@@ -2564,6 +2564,58 @@ rel_rename_column(mvc *sql, char* schema
return rel;
 }
 
+static sql_rel *
+rel_set_table_schema(mvc *sql, char* old_schema, char *tname, char 
*new_schema, int if_exists)
+{
+   sql_schema *os, *ns;
+   sql_table *ot, *nt;
+   sql_rel *l, *r, *inserts;
+
+   assert(old_schema && tname && new_schema);
+
+   if (!(os = mvc_bind_schema(sql, old_schema))) {
+   if (if_exists)
+   return rel_psm_block(sql->sa, new_exp_list(sql->sa));
+   return sql_error(sql, 02, SQLSTATE(42S02) "ALTER TABLE: no such 
schema '%s'", old_schema);
+   }
+   if (!mvc_schema_privs(sql, os))
+   return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: access 
denied for %s to schema '%s'", stack_get_string(sql, "current_user"), 
old_schema);
+   if (!(ot = mvc_bind_table(sql, os, tname))) {
+   if (if_exists)
+   return rel_psm_block(sql->sa, new_exp_list(sql->sa));
+   return sql_error(sql, 02, SQLSTATE(42S02) "ALTER TABLE: no such 
table '%s' in schema '%s'", tname, old_schema);
+   }
+   if (ot->system)
+   return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: cannot 
set schema of a system table");
+   if (isTempSchema(os) || isTempTable(ot))
+   return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: not 
possible to change a temporary table schema");
+   if (mvc_check_dependency(sql, ot->base.id, TABLE_DEPENDENCY, NULL))
+   return sql_error(sql, 02, SQLSTATE(2BM37) "ALTER TABLE: unable 
to set schema of table %s (there are database objects which depend on it)", 
tname);
+   if (!(ns = mvc_bind_schema(sql, new_schema)))
+   return sql_error(sql, 02, SQLSTATE(42S02) "ALTER TABLE: no such 
schema '%s'", new_schema);
+   if (!mvc_schema_privs(sql, ns))
+   return sql_error(sql, 02, SQLSTATE(42000) "ALTER TABLE: access 
denied for %s to schema '%s'", stack_get_string(sql, "current_user"), 
new_schema);
+   if (isTempSchema(ns))
+   return sql_error(sql, 02, SQLSTATE(3F000) "ALTER TABLE: not 
possible to change table's schema to temporary");
+   if (mvc_bind_table(sql, ns, tname))
+   return sql_error(sql, 02, SQLSTATE(42S02) "ALTER TABLE: table 
'%s' on schema '%s' already exists", tname, new_schema);
+
+   if ((nt = mvc_create_table(sql, ns, tname, ot->type, 0, 
SQL_DECLARED_TABLE, ot->commit_action, -1, ot->properties)) == NULL)
+   return NULL;
+   for (node *cn = ot->columns.set->h; cn; cn = cn->next) {
+   sql_column *col = (sql_column*) cn->data;
+   if (!mvc_create_column(sql, nt, col->base.name, >type))
+   return NULL;
+   }
+   l = rel_table(sql, DDL_CREATE_TABLE, new_schema, nt, 0);
+
+   inserts = rel_basetable(sql, ot, tname);
+   inserts = rel_project(sql->sa, inserts, rel_projections(sql, inserts, 
NULL, 1, 0));
+   l = rel_insert(sql, l, inserts);
+   r = rel_drop(sql->sa, DDL_DROP_TABLE, old_schema, tname, 0, 0);
+   return rel_list(sql->sa, l, r);
+}
+
 sql_rel *
 rel_schemas(mvc *sql, symbol *s)
 {
@@ -2789,6 +2841,14 @@ rel_schemas(mvc *sql, symbol *s)
sname = cur_schema(sql)->base.name;
ret = rel_rename_column(sql, sname, tname, 
l->h->next->data.sval, l->h->next->next->data.sval, 
l->h->next->next->next->data.i_val);
}   break;
+   case SQL_SET_TABLE_SCHEMA: {
+   dlist *l = s->data.lval;
+   char *sname = qname_schema(l->h->data.lval);
+   char *tname = qname_table(l->h->data.lval);
+   if (!sname)
+   sname = cur_schema(sql)->base.name;
+   ret = rel_set_table_schema(sql, sname, tname, 
l->h->next->data.sval, l->h->next->next->data.i_val);
+   }   break;
case SQL_CREATE_TYPE: {
dlist *l = s->data.lval;
 
diff --git a/sql/server/rel_semantic.c b/sql/server/rel_semantic.c
--- a/sql/server/rel_semantic.c
+++ b/sql/server/rel_semantic.c
@@ -157,6 +157,7 @@ rel_semantic(mvc *sql, symbol *s)
case SQL_RENAME_SCHEMA:
case SQL_RENAME_TABLE:

MonetDB: default - Typo.

2018-11-23 Thread Sjoerd Mullender
Changeset: 84156ee8c434 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=84156ee8c434
Modified Files:
sql/server/sql_parser.y
Branch: default
Log Message:

Typo.


diffs (12 lines):

diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -5719,7 +5719,7 @@ non_reserved_word:
 | QUARTER  { $$ = sa_strdup(SA, "quarter"); }
 | REPLACE  { $$ = sa_strdup(SA, "replace"); }
 | ROLE { $$ = sa_strdup(SA, "role"); }
-| SCHEMA   { $$ = sa_strdup(SA, "schema");
+| SCHEMA   { $$ = sa_strdup(SA, "schema"); }
 | SERVER   { $$ = sa_strdup(SA, "server"); }
 | sqlSESSION   { $$ = sa_strdup(SA, "session"); }
 | sqlSIZE  { $$ = sa_strdup(SA, "size"); }
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Sorted and checked list of non-reserved words.

2018-11-23 Thread Sjoerd Mullender
Changeset: bcd9636dcea0 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=bcd9636dcea0
Modified Files:
sql/server/sql_parser.y
Branch: default
Log Message:

Sorted and checked list of non-reserved words.


diffs (182 lines):

diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -5661,96 +5661,95 @@ ident:
}
  ;
 
-non_reserved_word: 
-  LARGE{ $$ = sa_strdup(SA, "large"); }/* sloppy: 
officially reserved */
-| sqlNAME  { $$ = sa_strdup(SA, "name"); }
-| OBJECT   { $$ = sa_strdup(SA, "object"); }   /* sloppy: officially 
reserved */
-| PASSWORD { $$ = sa_strdup(SA, "password"); } /* neither reserved nor 
non-reserv. */
-| PATH { $$ = sa_strdup(SA, "path"); } /* sloppy: officially 
reserved */
-| PRECISION{ $$ = sa_strdup(SA, "precision"); }/* sloppy: officially 
reserved */
-| PRIVILEGES   { $$ = sa_strdup(SA, "privileges"); }   /* sloppy: officially 
reserved */
-| ROLE { $$ = sa_strdup(SA, "role"); } /* neither reserved nor 
non-reserv. */
-| sqlSIZE  { $$ = sa_strdup(SA, "size"); } /* sloppy: officially 
reserved */
-| TYPE { $$ = sa_strdup(SA, "type"); }
-| RELEASE  { $$ = sa_strdup(SA, "release"); }  /* sloppy: officially 
reserved */
-| VALUE{ $$ = sa_strdup(SA, "value"); }/* sloppy: 
officially reserved */
-| ZONE { $$ = sa_strdup(SA, "zone"); } /* sloppy: officially 
reserved */
-
-| ACTION   { $$ = sa_strdup(SA, "action"); }   /* sloppy: officially 
reserved */
-| AS   { $$ = sa_strdup(SA, "as"); }   /* sloppy: officially 
reserved */
+non_reserved_word:
+  AS   { $$ = sa_strdup(SA, "as"); }   /* sloppy: officially 
reserved */
 | AUTHORIZATION{ $$ = sa_strdup(SA, "authorization"); }/* sloppy: 
officially reserved */
 | COLUMN   { $$ = sa_strdup(SA, "column"); }   /* sloppy: officially 
reserved */
 | CYCLE{ $$ = sa_strdup(SA, "cycle"); }/* sloppy: 
officially reserved */
+| sqlDATE  { $$ = sa_strdup(SA, "date"); } /* sloppy: officially 
reserved */
 | DISTINCT { $$ = sa_strdup(SA, "distinct"); } /* sloppy: officially 
reserved */
-| INCREMENT{ $$ = sa_strdup(SA, "increment"); }/* sloppy: officially 
reserved */
-| MAXVALUE { $$ = sa_strdup(SA, "maxvalue"); } /* sloppy: officially 
reserved */
-| MINVALUE { $$ = sa_strdup(SA, "minvalue"); } /* sloppy: officially 
reserved */
-| SQL_PLAN { $$ = sa_strdup(SA, "plan"); } /* sloppy: officially 
reserved */
-| SCHEMA   { $$ = sa_strdup(SA, "schema"); }   /* sloppy: officially 
reserved */
+| EXEC { $$ = sa_strdup(SA, "exec"); } /* sloppy: officially 
reserved */
+| EXECUTE  { $$ = sa_strdup(SA, "execute"); }  /* sloppy: officially 
reserved */
+| FILTER   { $$ = sa_strdup(SA, "filter"); }   /* sloppy: officially 
reserved */
+| INTERVAL { $$ = sa_strdup(SA, "interval"); } /* sloppy: officially 
reserved */
+| LANGUAGE { $$ = sa_strdup(SA, "language"); } /* sloppy: officially 
reserved */
+| LARGE{ $$ = sa_strdup(SA, "large"); }/* sloppy: 
officially reserved */
+| MATCH{ $$ = sa_strdup(SA, "match"); }/* sloppy: 
officially reserved */
+| NO   { $$ = sa_strdup(SA, "no"); }   /* sloppy: officially 
reserved */
+| PRECISION{ $$ = sa_strdup(SA, "precision"); }/* sloppy: officially 
reserved */
+| PREPARE  { $$ = sa_strdup(SA, "prepare"); }  /* sloppy: officially 
reserved */
+| RELEASE  { $$ = sa_strdup(SA, "release"); }  /* sloppy: officially 
reserved */
+| ROW  { $$ = sa_strdup(SA, "row"); }  /* sloppy: officially 
reserved */
 | START{ $$ = sa_strdup(SA, "start"); }/* sloppy: 
officially reserved */
-| STATEMENT{ $$ = sa_strdup(SA, "statement"); }/* sloppy: officially 
reserved */
 | TABLE{ $$ = sa_strdup(SA, "table"); }/* sloppy: 
officially reserved */
-
-|  CACHE   { $$ = sa_strdup(SA, "cache"); }
-|  DATA{ $$ = sa_strdup(SA, "data"); }
-|  DIAGNOSTICS { $$ = sa_strdup(SA, "diagnostics"); }
-|  MATCH   { $$ = sa_strdup(SA, "match"); }
-|  OPTIONS { $$ = sa_strdup(SA, "options"); }
-|  ROW { $$ = sa_strdup(SA, "row"); }
-|  KEY { $$ = sa_strdup(SA, "key"); }
-|  LANGUAGE{ $$ = sa_strdup(SA, "language"); }
-|  LEVEL   { $$ = sa_strdup(SA, "level"); }
-|  sqlSESSION  { $$ = sa_strdup(SA, "session"); }
-|  sqlDATE { $$ = sa_strdup(SA, "date"); }
-|  TIME{ $$ = sa_strdup(SA, "time"); }
-|  TIMESTAMP   { $$ = sa_strdup(SA, "timestamp"); }
-|  INTERVAL{ $$ = sa_strdup(SA, "interval"); }
-|  QUARTER { $$ = sa_strdup(SA, "quarter"); }
-|  WEEK{ $$ = sa_strdup(SA, "week"); }
-|  

MonetDB: default - Implemented X'...' '...'... binary string lit...

2018-11-23 Thread Sjoerd Mullender
Changeset: f15ffa2ad094 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f15ffa2ad094
Modified Files:
sql/ChangeLog
sql/server/sql_parser.y
sql/server/sql_scan.c
Branch: default
Log Message:

Implemented X'...' '...'... binary string literals.


diffs (111 lines):

diff --git a/sql/ChangeLog b/sql/ChangeLog
--- a/sql/ChangeLog
+++ b/sql/ChangeLog
@@ -2,6 +2,7 @@
 # This file is updated with Maddlog
 
 * Fri Nov 23 2018 Sjoerd Mullender 
+- Implemented X'...' style binary string literals.
 - Implemented U&'...' Unicode character string literals and
   U&"..." Unicode delimited identifiers, including UESCAPE.  For the
   string literals, you can have U&'...' '...' '...' UESCAPE '...' where
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -393,6 +393,7 @@ int yydebug=1;
string
sstring
ustring
+   blobstring
type_alias
varchar
clob
@@ -592,7 +593,7 @@ int yydebug=1;
opt_nulls_first_last
tz
 
-%right  STRING USTRING
+%right  STRING USTRING XSTRING
 %right  X_BODY
 
 /* sql prefixes to avoid name clashes on various architectures */
@@ -5018,6 +5019,23 @@ literal:
YYABORT;
  }
}
+ |  blobstring
+   { sql_subtype t;
+ atom *a= 0;
+ int r;
+
+ $$ = NULL;
+ r = sql_find_subtype(, "blob", 0, 0);
+ if (r && (a = atom_general(SA, , $1)) != NULL)
+   $$ = _newAtomNode(a);
+ if (!$$) {
+   char *msg = sql_message(SQLSTATE(22M28) "incorrect blob 
%s", $1);
+
+   yyerror(m, msg);
+   _DELETE(msg);
+   YYABORT;
+ }
+   }
  |  aTYPE string
{ sql_subtype t;
  atom *a= 0;
@@ -5850,6 +5868,16 @@ ustring:
}
  ;
 
+blobstring:
+XSTRING/* X'...' */
+   { $$ = $1; }
+ |  XSTRING sstring
+   { char *s = strconcat($1,$2);
+ $$ = sa_strdup(SA, s);
+ _DELETE(s);
+   }
+ ;
+
 sstring:
 STRING
{ $$ = $1; }
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
@@ -1147,6 +1147,10 @@ tokenize(mvc * c, int cur)
lc->rs->buf[lc->rs->pos + lc->yycur] == '\'') {
return scanner_string(c, scanner_getc(lc), 
true);
}
+   if ((cur == 'X' || cur == 'x') &&
+   lc->rs->buf[lc->rs->pos + lc->yycur] == '\'') {
+   return scanner_string(c, scanner_getc(lc), 
true);
+   }
if ((cur == 'U' || cur == 'u') &&
lc->rs->buf[lc->rs->pos + lc->yycur] == '&' &&
(lc->rs->buf[lc->rs->pos + lc->yycur + 1] == '\'' ||
@@ -1238,7 +1242,7 @@ sql_get_next_token(YYSTYPE *yylval, void
else if (token == STRING) {
char quote = *yylval->sval;
char *str = sa_alloc( c->sa, (lc->yycur-lc->yysval-2)*2 + 1 );
-   assert(quote == '"' || quote == '\'' || quote == 'E' || quote 
== 'e' || quote == 'U' || quote == 'u');
+   assert(quote == '"' || quote == '\'' || quote == 'E' || quote 
== 'e' || quote == 'U' || quote == 'u' || quote == 'X' || quote == 'x');
 
lc->rs->buf[lc->rs->pos + lc->yycur - 1] = 0;
if (quote == '"') {
@@ -1260,6 +1264,15 @@ sql_get_next_token(YYSTYPE *yylval, void
strcpy(str, yylval->sval + 3);
token = yylval->sval[2] == '\'' ? USTRING : UIDENT;
quote = yylval->sval[2];
+   } else if (quote == 'X' || quote == 'x') {
+   assert(yylval->sval[1] == '\'');
+   char *dst = str;
+   for (char *src = yylval->sval + 2; *src; dst++)
+   if ((*dst = *src++) == '\'' && *src == '\'')
+   src++;
+   *dst = 0;
+   quote = '\'';
+   token = XSTRING;
} else {
 #if 0
char *dst = str;
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Implemented Unicode character string literals...

2018-11-23 Thread Sjoerd Mullender
Changeset: 9f1b1d94b70d for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=9f1b1d94b70d
Modified Files:
sql/ChangeLog
sql/server/sql_parser.y
sql/server/sql_scan.c
Branch: default
Log Message:

Implemented Unicode character string literals and Unicode delimited identifiers.
I.e. U&'...' '...'... UESCAPE '...' and U&"..." UESCAPE '...'.
In the former case, the extra '...' strings still undergo C-style
backslash interpretation (incorrectly).


diffs (truncated from 330 to 300 lines):

diff --git a/sql/ChangeLog b/sql/ChangeLog
--- a/sql/ChangeLog
+++ b/sql/ChangeLog
@@ -2,6 +2,12 @@
 # This file is updated with Maddlog
 
 * Fri Nov 23 2018 Sjoerd Mullender 
+- Implemented U&'...' Unicode character string literals and
+  U&"..." Unicode delimited identifiers, including UESCAPE.  For the
+  string literals, you can have U&'...' '...' '...' UESCAPE '...' where
+  the escape must be as single character and the other '...' strings
+  are also Unicode character string literals.  For now, these latter
+  strings also undergo C-style backslash interpretation.
 - Implemented PostgreSQL-like E'...' strings.  The strings can contain
   C-style backslash escapes.  The old format strings '...' currently
   still also accept C-style escapes, but that feature will be removed
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -93,6 +93,64 @@ UTF8_strlen(const char *val)
return pos;
 }
 
+
+static char *
+uescape_xform(char *restrict s, const char *restrict esc)
+{
+   size_t i, j;
+
+   for (i = j = 0; s[i]; i++) {
+   if (s[i] == *esc) {
+   if (s[i + 1] == *esc) {
+   s[j++] = *esc;
+   i++;
+   } else {
+   int c = 0;
+   int n;
+   if (s[i + 1] == '+') {
+   n = 6;
+   i++;
+   } else {
+   n = 4;
+   }
+   do {
+   i++;
+   c <<= 4;
+   if ('0' <= s[i] && s[i] <= '9')
+   c |= s[i] - '0';
+   else if ('a' <= s[i] && s[i] <= 'f')
+   c |= s[i] - 'a' + 10;
+   else if ('A' <= s[i] && s[i] <= 'F')
+   c |= s[i] - 'A' + 10;
+   else
+   return NULL;
+   } while (--n > 0);
+   if (c == 0 || c > 0x10 || (c & 0xFFF800) == 
0xD800)
+   return NULL;
+   if (c < 0x80) {
+   s[j++] = c;
+   } else {
+   if (c < 0x800) {
+   s[j++] = 0xC0 | (c >> 6);
+   } else {
+   if (c < 0x1) {
+   s[j++] = 0xE0 | (c >> 
12);
+   } else {
+   s[j++] = 0xF0 | (c >> 
18);
+   s[j++] = 0x80 | ((c >> 
12) & 0x3F);
+   }
+   s[j++] = 0x80 | ((c >> 6) & 
0x3F);
+   }
+   s[j++] = 0x80 | (c & 0x3F);
+   }
+   }
+   } else {
+   s[j++] = s[i];
+   }
+   }
+   s[j] = 0;
+   return s;
+}
 %}
 /* KNOWN NOT DONE OF sql'99
  *
@@ -319,6 +377,7 @@ int yydebug=1;
opt_constraint_name
non_reserved_word
ident
+   ident_or_uident
calc_ident
authorization_identifier
func_ident
@@ -332,6 +391,8 @@ int yydebug=1;
opt_using
opt_null_string
string
+   sstring
+   ustring
type_alias
varchar
clob
@@ -347,6 +408,7 @@ int yydebug=1;
XML_namespace_prefix
XML_PI_target
function_body
+   opt_uescape
 
 %type 
passwd_schema
@@ -530,12 +592,12 @@ int yydebug=1;
opt_nulls_first_last
tz
 
-%right  STRING
+%right  STRING USTRING
 %right  X_BODY
 
 /* sql prefixes to avoid name clashes on various architectures */
 %token 
-  

MonetDB: default - SQL blobs are allowed to have whitespace in t...

2018-11-23 Thread Sjoerd Mullender
Changeset: a8d267c2a067 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a8d267c2a067
Modified Files:
monetdb5/modules/atoms/blob.c
Branch: default
Log Message:

SQL blobs are allowed to have whitespace in their string representation.


diffs (96 lines):

diff --git a/monetdb5/modules/atoms/blob.c b/monetdb5/modules/atoms/blob.c
--- a/monetdb5/modules/atoms/blob.c
+++ b/monetdb5/modules/atoms/blob.c
@@ -428,8 +428,8 @@ SQLBLOBtostr(str *tostr, size_t *l, cons
 }
 
 /* SQL 99 compatible BLOB input string
- * differs from the MonetDB BLOB input in that it does not start with a size
- * no brackets and no spaces in between the hexits
+ * differs from the MonetDB BLOB input in that it does not start with
+ * a size and no brackets
  */
 ssize_t
 SQLBLOBfromstr(const char *instr, size_t *l, blob **val, bool external)
@@ -451,15 +451,21 @@ SQLBLOBfromstr(const char *instr, size_t
return GDK_STRNIL(instr) ? 1 : 3;
}
 
-   /* since the string is built of (only) hexits the number of bytes
-* required for it is the length of the string divided by two
+   /* count hexits and check for hexits/space
 */
-   i = strlen(instr);
-   if (i % 2 == 1) {
-   GDKerror("sqlblob_fromstr: Illegal blob length '%zu' (should be 
even)\n", i);
+   for (i = nitems = 0; instr[i]; i++) {
+   if (isxdigit((unsigned char) instr[i]))
+   nitems++;
+   else if (!isspace((unsigned char) instr[i])) {
+   GDKerror("sqlblob_fromstr: Illegal char in blob\n");
+   return -1;
+   }
+   }
+   if (nitems % 2 != 0) {
+   GDKerror("sqlblob_fromstr: Illegal blob length '%zu' (should be 
even)\n", nitems);
return -1;
}
-   nitems = i / 2;
+   nitems /= 2;
nbytes = blobsize(nitems);
 
if (*l < nbytes || *val == NULL) {
@@ -478,27 +484,35 @@ SQLBLOBfromstr(const char *instr, size_t
for (i = 0; i < nitems; ++i) {
char res = 0;
 
-   if (isdigit((unsigned char) *s)) {
-   res = *s - '0';
-   } else if (*s >= 'A' && *s <= 'F') {
-   res = 10 + *s - 'A';
-   } else if (*s >= 'a' && *s <= 'f') {
-   res = 10 + *s - 'a';
-   } else {
-   GDKerror("sqlblob_fromstr: Illegal char '%c' in 
blob\n", *s);
-   return -1;
+   for (;;) {
+   if (isdigit((unsigned char) *s)) {
+   res = *s - '0';
+   } else if (*s >= 'A' && *s <= 'F') {
+   res = 10 + *s - 'A';
+   } else if (*s >= 'a' && *s <= 'f') {
+   res = 10 + *s - 'a';
+   } else {
+   assert(isspace((unsigned char) *s));
+   s++;
+   continue;
+   }
+   break;
}
s++;
res <<= 4;
-   if (isdigit((unsigned char) *s)) {
-   res += *s - '0';
-   } else if (*s >= 'A' && *s <= 'F') {
-   res += 10 + *s - 'A';
-   } else if (*s >= 'a' && *s <= 'f') {
-   res += 10 + *s - 'a';
-   } else {
-   GDKerror("sqlblob_fromstr: Illegal char '%c' in 
blob\n", *s);
-   return -1;
+   for (;;) {
+   if (isdigit((unsigned char) *s)) {
+   res += *s - '0';
+   } else if (*s >= 'A' && *s <= 'F') {
+   res += 10 + *s - 'A';
+   } else if (*s >= 'a' && *s <= 'f') {
+   res += 10 + *s - 'a';
+   } else {
+   assert(isspace((unsigned char) *s));
+   s++;
+   continue;
+   }
+   break;
}
s++;
 
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list


MonetDB: default - Implemented PostrgreSQL-like string constants...

2018-11-23 Thread Sjoerd Mullender
Changeset: dafd6ab8390e for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=dafd6ab8390e
Modified Files:
sql/ChangeLog
sql/server/sql_parser.y
sql/server/sql_scan.c
Branch: default
Log Message:

Implemented PostrgreSQL-like string constants with C-style escapes.
The strings look like E'...'.

The code to disable C-style escapes in '...' strings is also there,
but currently disabled using "#if 0" (twice) in sql_scan.c.


diffs (126 lines):

diff --git a/sql/ChangeLog b/sql/ChangeLog
--- a/sql/ChangeLog
+++ b/sql/ChangeLog
@@ -1,6 +1,12 @@
 # ChangeLog file for sql
 # This file is updated with Maddlog
 
+* Fri Nov 23 2018 Sjoerd Mullender 
+- Implemented PostgreSQL-like E'...' strings.  The strings can contain
+  C-style backslash escapes.  The old format strings '...' currently
+  still also accept C-style escapes, but that feature will be removed
+  in a future release.
+
 * Thu Nov  8 2018 Sjoerd Mullender 
 - Imlemented the NULLS FIRST and NULLS LAST option to ORDER BY.  The
   default is NULLS FIRST for ASC(ending) and NULLS LAST for DESC(ending).
diff --git a/sql/server/sql_parser.y b/sql/server/sql_parser.y
--- a/sql/server/sql_parser.y
+++ b/sql/server/sql_parser.y
@@ -1200,7 +1200,7 @@ alter_table_element:
  $$ = _symbol_create_list( SQL_NOT_NULL, l); }
  | opt_column ident DROP DEFAULT
{ $$ = _symbol_create( SQL_DROP_DEFAULT, $2); }
- | opt_column ident SET STORAGE STRING
+ | opt_column ident SET STORAGE string
{ dlist *l = L();
  append_string(l, $2);
  if (!strlen($5))
@@ -1395,7 +1395,7 @@ opt_encrypted:
 
 table_opt_storage:
 /* empty */ { $$ = NULL; }
- |  STORAGE ident STRING { $$ = append_string(append_string(L(), $2), $3); } 
+ |  STORAGE ident string { $$ = append_string(append_string(L(), $2), $3); } 
  ;
 
 table_def:
@@ -1462,7 +1462,7 @@ table_def:
  /* mapi:monetdb://host:port/database[/schema[/table]] 
 This also allows access via monetdbd. 
 We assume the monetdb user with default password */
- |  REMOTE TABLE if_not_exists qname table_content_source ON STRING 
with_opt_credentials
+ |  REMOTE TABLE if_not_exists qname table_content_source ON string 
with_opt_credentials
{ int commit_action = CA_COMMIT, tpe = SQL_REMOTE;
  dlist *l = L();
 
@@ -2951,7 +2951,7 @@ header:
{ dlist *l = L();
  append_string(l, $1 );
  $$ = l; }
- | ident STRING
+ | ident string
{ dlist *l = L();
  append_string(l, $1 );
  append_string(l, $2 );
@@ -6589,4 +6589,3 @@ int sqlerror(mvc * c, const char *err)
sqlstate, err, QUERY(c->scanner));
return 1;
 }
-
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
@@ -969,7 +969,13 @@ int scanner_symbol(mvc * c, int cur)
return tokenize(c, cur);
case '\'':
case '"':
-   return scanner_string(c, cur, cur == '\'');
+   return scanner_string(c, cur,
+#if 0
+ false
+#else
+ cur == '\''
+#endif
+   );
case '{':
return scanner_body(c);
case '-':
@@ -1136,6 +1142,10 @@ tokenize(mvc * c, int cur)
} else if (iswdigit(cur)) {
return number(c, cur);
} else if (iswalpha(cur) || cur == '_') {
+   if (cur == 'E' &&
+   lc->rs->buf[lc->rs->pos + lc->yycur] == '\'') {
+   return scanner_string(c, scanner_getc(lc), 
true);
+   }
return keyword_or_ident(c, cur);
} else if (iswpunct(cur)) {
return scanner_symbol(c, cur);
@@ -1220,9 +1230,9 @@ sql_get_next_token(YYSTYPE *yylval, void
else if (token == STRING) {
char quote = *yylval->sval;
char *str = sa_alloc( c->sa, (lc->yycur-lc->yysval-2)*2 + 1 );
-   assert(quote == '"' || quote == '\'');
+   assert(quote == '"' || quote == '\'' || quote == 'E');
 
-   lc->rs->buf[lc->rs->pos+lc->yycur- 1] = 0;
+   lc->rs->buf[lc->rs->pos + lc->yycur - 1] = 0;
if (quote == '"') {
if (valid_ident(yylval->sval+1,str)) {
token = IDENT;
@@ -1230,10 +1240,24 @@ sql_get_next_token(YYSTYPE *yylval, void
sql_error(c, 1, SQLSTATE(42000) "Invalid 
identifier '%s'", yylval->sval+1);
return LEX_ERROR;
}
+   } else if (quote == 'E') {
+   assert(yylval->sval[1] == '\'');
+   

MonetDB: default - Use '' to get a single ' into a '-delimited s...

2018-11-23 Thread Sjoerd Mullender
Changeset: 5c6c57c9923a for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=5c6c57c9923a
Modified Files:
sql/benchmarks/VOC/voc_dump.sql
sql/benchmarks/moa/load1.sql
sql/test/ADT2006/benesamo.sql

sql/test/BugDay_2005-10-06_2.9.3/Tests/UNION_JOIN_vs_plain_set_UNION-2.SF-920585.sql

sql/test/BugTracker-2010/Tests/multiple-common-table-expressions.Bug-2664.sql
sql/test/BugTracker-2012/Tests/strange_escaping_in_csv.Bug-2133.sql

sql/test/BugTracker-2012/Tests/strange_escaping_in_csv.Bug-2133.stable.out
sql/test/BugTracker-2012/Tests/time-export-bug.Bug-2963.sql
sql/test/BugTracker-2013/Tests/aggregates-typing-issues.Bug-3277.sql
sql/test/BugTracker-2013/Tests/median-null.Bug-3280.sql
sql/test/BugTracker-2014/Tests/null_in_string.Bug-2014.sql
sql/test/BugTracker-2015/Tests/is_null_limit.Bug-3684.sql
sql/test/BugTracker-2017/Tests/semijoinunion.Bug-6150.sql
sql/test/VOC/VOCinsert.sql
sql/test/bugs/escape_quote-bug-sf-1006469.sql
sql/test/copy/Tests/int_parse.sql
sql/test/copy/Tests/int_parse.stable.err
sql/test/copy/Tests/int_parse_best.sql
sql/test/copy/Tests/key_copy.sql
sql/test/copy/Tests/key_copy.stable.err
sql/test/sql_xml/load.sql
Branch: default
Log Message:

Use '' to get a single ' into a '-delimited string.  Do not use \' for that.


diffs (truncated from 5049 to 300 lines):

diff --git a/sql/benchmarks/VOC/voc_dump.sql b/sql/benchmarks/VOC/voc_dump.sql
--- a/sql/benchmarks/VOC/voc_dump.sql
+++ b/sql/benchmarks/VOC/voc_dump.sql
@@ -78,7 +78,7 @@ INSERT INTO "voyages" VALUES (66, '', 1,
 INSERT INTO "voyages" VALUES (67, '', 1, '', 'TER GOES', 'Marten Jelisz. 
Spanjaard', 240, NULL, NULL, NULL, NULL, NULL, 'Z', '1602-03-31', 'Wielingen', 
NULL, NULL, true, '1602-11-28', 'Ceylon', 5059, 'fleet of Van Warwyck. The 
three ships of Zeeland preceded the rest of the fleet. Took on provisions in 
the Bay of Antongil.');
 INSERT INTO "voyages" VALUES (68, '', 1, '', 'VLISSINGEN', 'Laurens Fransz. 
van Vlissingen', 400, NULL, NULL, NULL, NULL, NULL, 'Z', '1602-03-31', 
'Wielingen', NULL, NULL, true, '1602-11-28', 'Ceylon', 5070, NULL);
 INSERT INTO "voyages" VALUES (69, '', 1, '', 'ZIERIKZEE', 'Govert Jansz.', 
760, NULL, NULL, NULL, NULL, NULL, 'Z', '1602-03-31', 'Wielingen', NULL, NULL, 
true, '1602-11-28', 'Ceylon', 5061, NULL);
-INSERT INTO "voyages" VALUES (70, '', 1, '', 'MAAGD VAN ENKHUIZEN', 'Kornelis 
Pietersz.', 320, NULL, NULL, NULL, NULL, NULL, 'E', '1602-06-17', 'Texel', 
NULL, NULL, true, '1603-04-29', 'Bantam', 5047, 'The equipment (0070-0081) of 
the `Fourteen ships\' (without the jacht PAPEGAAITJE) under admiraal Wybrand 
van Warwyck on the MAURITIUS.From June 24th till July 10th the fleet lay off 
Plymouth; from October 11th till 21th off Annabon; and was on December 12th 
near the Cape. December 14th the HOLLAND, the HOLLANDSE TUIN and the STER left 
the main fleet, and set sail for Atjeh, the remainder sailed for Bantam.');
+INSERT INTO "voyages" VALUES (70, '', 1, '', 'MAAGD VAN ENKHUIZEN', 'Kornelis 
Pietersz.', 320, NULL, NULL, NULL, NULL, NULL, 'E', '1602-06-17', 'Texel', 
NULL, NULL, true, '1603-04-29', 'Bantam', 5047, 'The equipment (0070-0081) of 
the `Fourteen ships'' (without the jacht PAPEGAAITJE) under admiraal Wybrand 
van Warwyck on the MAURITIUS.From June 24th till July 10th the fleet lay off 
Plymouth; from October 11th till 21th off Annabon; and was on December 12th 
near the Cape. December 14th the HOLLAND, the HOLLANDSE TUIN and the STER left 
the main fleet, and set sail for Atjeh, the remainder sailed for Bantam.');
 INSERT INTO "voyages" VALUES (71, '', 1, '', 'HOLLANDIA', 'Dirk Gerritsz. van 
Hoorn', 600, NULL, NULL, NULL, NULL, 'A', 'A', '1602-06-17', 'Texel', NULL, 
NULL, true, '1603-03-10', 'Atjeh', 5069, NULL);
 INSERT INTO "voyages" VALUES (72, '', 1, '', 'MAAN', 'Jan Kornelisz. Melknap', 
500, NULL, NULL, NULL, NULL, NULL, 'A', '1602-06-17', 'Texel', NULL, NULL, 
true, '1603-04-29', 'Bantam', NULL, NULL);
 INSERT INTO "voyages" VALUES (73, '', 1, '', 'MAURITIUS', 'Pieter Kornelisz. 
van Petten', 700, NULL, NULL, NULL, NULL, NULL, 'A', '1602-06-17', 'Texel', 
NULL, NULL, true, '1603-04-29', 'Bantam', 5052, NULL);
@@ -132,7 +132,7 @@ INSERT INTO "voyages" VALUES (120, '', 2
 INSERT INTO "voyages" VALUES (121, '', 2, '', 'AMSTERDAM', 'Pieter Gerritsz.', 
700, NULL, NULL, NULL, NULL, 'A', 'A', '1607-12-22', 'Texel', NULL, NULL, true, 
'1608-09-18', 'Goa', NULL, 'Captured by the Spaniards off Manilla, 
25-04-1610.');
 INSERT INTO "voyages" VALUES (122, '', 1, '', 'AREND', 'Rutger Thomasz.', 140, 
'jacht', NULL, NULL, NULL, 'A', 'A', '1607-12-22', 'Texel', NULL, NULL, true, 
'1608-09-18', 'Goa', NULL, 'Captured and burnt by the Spaniards off Manilla 
25-04-1610.');
 INSERT INTO "voyages" VALUES (123, '', 1, '', 'DELFT', 'Simon Maartensz. 
(Zwarte Simon)', 800, NULL, NULL, NULL, NULL, 

MonetDB: default - Use '' to get a single ' into a '-delimited s...

2018-11-23 Thread Sjoerd Mullender
Changeset: a28845fba882 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=a28845fba882
Modified Files:
sql/benchmarks/ATIS/load.sql
sql/test/ADT2006/bram.sql
sql/test/BugTracker-2015/Tests/project_rewrite.Bug-3693_2.sql
Branch: default
Log Message:

Use '' to get a single ' into a '-delimited string.  Do not use \' for that.


diffs (truncated from 348 to 300 lines):

diff --git a/sql/benchmarks/ATIS/load.sql b/sql/benchmarks/ATIS/load.sql
--- a/sql/benchmarks/ATIS/load.sql
+++ b/sql/benchmarks/ATIS/load.sql
@@ -353,7 +353,7 @@ insert into airline values ('XJ','MESABA
 insert into airline values ('XK','RESORT COMMUTER,INC.','');
 insert into airline values ('XQ','ACTION AIRLINES','');
 insert into airline values ('XV','PRESIDENTIAL AIRWAYS,INC.','');
-insert into airline values ('XW','WALKER\'S INTERNATIONAL','');
+insert into airline values ('XW','WALKER''S INTERNATIONAL','');
 insert into airline values ('XY','RYAN AIR,INC.','');
 insert into airline values ('YE','GRAND CANYON AIRLINES,INC.','CARRIER 
PERFORMS SEASONAL SERVICE ONLY');
 insert into airline values ('YI','AIR SUNSHINE INC.','NATL AIR TRANSPORTATION 
ASSOC,INC.');
@@ -434,7 +434,7 @@ insert into airline values ('7D','TRUMP 
 insert into airline values ('7F','FIRST AIR','');
 insert into airline values ('7G','GULFSTREAM AIRLINES,INC.','NATL AIR 
TRANSPORTATION ASSOC,INC.');
 insert into airline values ('7H','ERA AVIATION','');
-insert into airline values ('7K','LARRY\'S FLYING SERVICE,INC','');
+insert into airline values ('7K','LARRY''S FLYING SERVICE,INC','');
 insert into airline values ('7L','LAKE UNION AIR SERVICE','');
 insert into airline values ('7N','NORTHLAND AIR MANITOBA LIMITED','');
 insert into airline values ('7Q','CALIFORNIA AIR SHUTTLE','');
@@ -445,7 +445,7 @@ insert into airline values ('7W','AIR SA
 insert into airline values ('8B','BAKER AVIATION,INC.','');
 insert into airline values ('8D','SKYLINK AIRLINES','SERVICE TEMPORARILY 
SUSPENDED');
 insert into airline values ('8E','BERING AIR,INC.','');
-insert into airline values ('8F','WILBUR\'S INC.','');
+insert into airline values ('8F','WILBUR''S INC.','');
 insert into airline values ('8G','GP EXPRESS AIRLINES,INC.','');
 insert into airline values ('8H','HARBOR AIR SERVICE','');
 insert into airline values ('8K','AIR MUSKOKA','');
@@ -472,7 +472,7 @@ insert into airline values ('VL','SUN PA
 insert into airline values ('3D','EDGARTOWN AIR,INC.','');
 insert into airline values ('4Q','TRANS NORTH AVIATION,LTD.','CARRIER PERFORMS 
SEASONAL SERVICE ONLY');
 insert into airline values ('4R','RAVEN AIR,INC.','');
-insert into airline values ('4X','L\'EXPRESS AIRLINES','');
+insert into airline values ('4X','L''EXPRESS AIRLINES','');
 insert into airline values ('5C','CONQUEST AIRLINES CORP.','');
 insert into airline values ('7C','SIERRA VISTA AVIATION','SERVICE TEMPORARILY 
SUSPENDED');
 insert into airline values ('MC','MILITARY AIRLIFT COMMAND (MAC)-U.S. 
DEPARTMENT OF THE AIR FORCE','');
@@ -482,7 +482,7 @@ insert into airport values ('BWI','BALTI
 insert into airport values ('DEN','STAPLETON 
INTERNATIONAL','DENVER,COLORADO','CO','USA','MST');
 insert into airport values ('DFW','DALLAS/FORT WORTH 
INTERNATIONAL','DALLAS/FT. WORTH,TEXAS','TX','USA','CST');
 insert into airport values ('OAK','METROPOLITAN OAKLAND 
INTERNATIONAL','OAKLAND,CALIFORNIA','CA','USA','PST');
-insert into airport values ('PHL','PHILADELPHIA INTERNATIONAL','PHILADELPHIA 
PA/WILM\'TON,DE','PA','USA','EST');
+insert into airport values ('PHL','PHILADELPHIA INTERNATIONAL','PHILADELPHIA 
PA/WILM''TON,DE','PA','USA','EST');
 insert into airport values ('PIT','GREATER 
PITTSBURGH','PITTSBURGH,PENNSYLVANIA','PA','USA','EST');
 insert into airport values ('SFO','SAN FRANCISCO INTERNATIONAL','SAN 
FRANCISCO,CALIFORNIA','CA','USA','PST');
 insert into airport_service values ('MATL','ATL',9.0,'S',45);
@@ -9585,10 +9585,10 @@ insert into restrict_class values ('AP/2
 insert into restrict_class values ('AP/2','BW7NR');
 insert into restrict_class values ('AP/2','BWE14');
 insert into restrict_class values ('AP/2','YAP14');
-insert into restriction values ('AP/1','FOR TRAVEL ORIGINATING AND TERMINATING 
IN HAWAII','CHILDREN\'S FARES,SALES AGENTS,TOUR CONDUCTORS',7,'Y',3,150);
+insert into restriction values ('AP/1','FOR TRAVEL ORIGINATING AND TERMINATING 
IN HAWAII','CHILDREN''S FARES,SALES AGENTS,TOUR CONDUCTORS',7,'Y',3,150);
 insert into restriction values ('AP/2','FOR TRAVEL BETWEEN UNITED STATES AND 
CARIBBEAN','TOUR CONDUCTORS',7,'N',3,14);
-insert into restriction values ('AP/4','FOR TRAVEL BETWEEN UNITED STATES AND 
MEXICO','CHILDREN\'S FARES,SALES AGENTS',7,'Y',3,21);
-insert into restriction values ('AP/6','FOR TRAVEL TO/FROM 
CANADA','CHILDREN\'S FARES,FAMILY FARES,TOUR CONDUCTORS,VISIT USA 
FARES',7,'Y',3,30);
+insert into restriction values ('AP/4','FOR TRAVEL BETWEEN UNITED STATES AND 
MEXICO','CHILDREN''S FARES,SALES AGENTS',7,'Y',3,21);
+insert 

MonetDB: default - Add a cast.

2018-11-23 Thread Sjoerd Mullender
Changeset: d0b9da0ec1a4 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=d0b9da0ec1a4
Modified Files:
sql/backends/monet5/sql.c
Branch: default
Log Message:

Add a cast.


diffs (12 lines):

diff --git a/sql/backends/monet5/sql.c b/sql/backends/monet5/sql.c
--- a/sql/backends/monet5/sql.c
+++ b/sql/backends/monet5/sql.c
@@ -4515,7 +4515,7 @@ sql_storage(Client cntxt, MalBlkPtr mb, 
} else if 
(ATOMvarsized(bn->ttype)) {
sz = 
BATcount(bn);
if (sz 
> 0)
-   
w = (bn->tvheap->free + sz / 2) / sz;
+   
w = (int) ((bn->tvheap->free + sz / 2) / sz);
else

w = 0;
}
___
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list