MonetDB: analytics - Merge with default.
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.
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
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 sql/benchmarks/ATIS/loa
MonetDB: merge-statements - Added alter schema of table statemen...
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, &col->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.
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.
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...
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(&t, "blob", 0, 0); + if (r && (a = atom_general(SA, &t, $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...
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...
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...
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] == '\''); + GDKstrFromStr((uns
MonetDB: default - Use '' to get a single ' into a '-delimited s...
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...
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 into
MonetDB: default - Add a cast.
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