Changeset: 597a8c9ca507 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=597a8c9ca507
Added Files:
        gdk/gdk_cand.c
        sql/test/BugTracker-2019/Tests/copy-into-unicode-quote.Bug-6716.sql
        
sql/test/BugTracker-2019/Tests/copy-into-unicode-quote.Bug-6716.stable.err
        
sql/test/BugTracker-2019/Tests/copy-into-unicode-quote.Bug-6716.stable.out
        
sql/test/BugTracker-2019/Tests/disallow_duplicate_column_aliases.Bug-6723.sql
        
sql/test/BugTracker-2019/Tests/disallow_duplicate_column_aliases.Bug-6723.stable.err
        
sql/test/BugTracker-2019/Tests/disallow_duplicate_column_aliases.Bug-6723.stable.out
        sql/test/BugTracker-2019/Tests/insert-into-select.Bug-6718.sql
        sql/test/BugTracker-2019/Tests/insert-into-select.Bug-6718.stable.err
        sql/test/BugTracker-2019/Tests/insert-into-select.Bug-6718.stable.out
        
sql/test/BugTracker-2019/Tests/prepare-non-existing-function.Bug-6725.sql
        
sql/test/BugTracker-2019/Tests/prepare-non-existing-function.Bug-6725.stable.err
        
sql/test/BugTracker-2019/Tests/prepare-non-existing-function.Bug-6725.stable.out
        sql/test/BugTracker-2019/Tests/prepare-types.Bug-6724.sql
        sql/test/BugTracker-2019/Tests/prepare-types.Bug-6724.stable.err
        sql/test/BugTracker-2019/Tests/prepare-types.Bug-6724.stable.out
        
sql/test/BugTracker-2019/Tests/select_window_function_and_asterisk.Bug-6722.sql
        
sql/test/BugTracker-2019/Tests/select_window_function_and_asterisk.Bug-6722.stable.err
        
sql/test/BugTracker-2019/Tests/select_window_function_and_asterisk.Bug-6722.stable.out
Modified Files:
        clients/Tests/MAL-signatures.stable.out
        clients/Tests/MAL-signatures.stable.out.int128
        clients/Tests/exports.stable.out
        clients/mapiclient/mhelp.c
        embedded/CMakeLists.txt
        gdk/CMakeLists.txt
        gdk/Makefile.ag
        gdk/gdk.h
        gdk/gdk_batop.c
        gdk/gdk_join.c
        gdk/gdk_logger.c
        gdk/gdk_select.c
        gdk/gdk_unique.c
        monetdb5/ChangeLog
        monetdb5/mal/mal_import.c
        monetdb5/modules/kernel/bat5.c
        monetdb5/modules/kernel/bat5.h
        monetdb5/modules/kernel/bat5.mal
        monetdb5/modules/mal/Tests/inspect05.stable.out
        monetdb5/modules/mal/Tests/inspect05.stable.out.int128
        monetdb5/modules/mal/pcre.c
        monetdb5/modules/mal/wlc.c
        monetdb5/optimizer/opt_candidates.c
        monetdb5/optimizer/opt_prelude.c
        monetdb5/optimizer/opt_prelude.h
        monetdb5/optimizer/opt_support.c
        sql/backends/monet5/UDF/udf/Tests/udf-fuse.stable.out
        sql/backends/monet5/UDF/udf/Tests/udf-reverse.stable.out
        sql/backends/monet5/sql.c
        sql/backends/monet5/sql_scenario.c
        sql/backends/monet5/sql_upgrades.c
        sql/backends/monet5/vaults/bam/Tests/bam_lib.stable.out
        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.11.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/vaults/bam/Tests/query2.8.stable.out
        sql/backends/monet5/vaults/bam/Tests/sam_export.stable.out
        sql/backends/monet5/wlr.c
        sql/include/sql_catalog.h
        sql/jdbc/tests/Tests/Test_PSmetadata.stable.out
        sql/server/rel_exp.c
        sql/server/rel_optimizer.c
        sql/server/rel_propagate.c
        sql/server/rel_psm.c
        sql/server/rel_select.c
        sql/server/rel_updates.c
        sql/server/sql_atom.c
        sql/server/sql_qc.c
        sql/server/sql_qc.h
        sql/storage/bat/bat_storage.c
        sql/storage/bat/bat_storage.h
        sql/storage/store.c
        sql/test/BugTracker-2008/Tests/auto_coersion_bug.SF-2075157.stable.out
        
sql/test/BugTracker-2010/Tests/ORDER_BY_over_UNION_EXCEPT_INTERSECT.Bug-2606.stable.out
        sql/test/BugTracker-2010/Tests/prepare_stmt.Bug-2533.Bug-2534.stable.out
        sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out
        sql/test/BugTracker-2011/Tests/crash_on_alias.Bug-2798.stable.out.int128
        sql/test/BugTracker-2014/Tests/manifold.Bug-3556.stable.out
        sql/test/BugTracker-2015/Tests/crash.Bug-3736.stable.out
        
sql/test/BugTracker-2015/Tests/crash_timestamp_convert.Bug-3816.stable.err.Windows
        
sql/test/BugTracker-2015/Tests/quantile_function_resolution.Bug-3773.stable.out
        sql/test/BugTracker-2016/Tests/decimal_vs_integer.Bug-3941.stable.out
        sql/test/BugTracker-2016/Tests/merge_project.Bug-3955.stable.out
        sql/test/BugTracker-2016/Tests/rename_exps.Bug-3974.stable.out
        sql/test/BugTracker-2017/Tests/caching_stats_bug.6374.stable.out
        sql/test/BugTracker-2017/Tests/side-effect.Bug-6397.stable.out
        sql/test/BugTracker-2017/Tests/side-effect.Bug-6397.stable.out.single
        sql/test/BugTracker-2017/Tests/sqlsmith01.stable.out
        
sql/test/BugTracker-2018/Tests/count_from_commented_function_signatures.Bug-6542.stable.out
        
sql/test/BugTracker-2018/Tests/prepared-statement-with-udf.Bug-6650.stable.out
        sql/test/BugTracker-2019/Tests/All
        
sql/test/BugTracker-2019/Tests/duplicates-not-eliminated-long-CASE-stmt.Bug-6697.stable.out
        sql/test/BugTracker-2019/Tests/merge-statement-aliases.Bug-6715.sql
        
sql/test/BugTracker-2019/Tests/merge-statement-aliases.Bug-6715.stable.out
        sql/test/BugTracker-2019/Tests/prepared-merge-statement.Bug-6706.sql
        
sql/test/BugTracker-2019/Tests/prepared-merge-statement.Bug-6706.stable.err
        
sql/test/BugTracker-2019/Tests/prepared-merge-statement.Bug-6706.stable.out
        sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-query.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-0join-view.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-query.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-1join-view.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-query.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-explain-2join-view.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-0join-query.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-0join-view.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-1join-query.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-1join-view.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-2join-query.stable.out
        
sql/test/FeatureRequests/Tests/foreign_key_outer_join_dead_code_elimination-plan-2join-view.stable.out
        sql/test/Tests/order_by_complex_exp.stable.out
        sql/test/VOC/Tests/VOC.stable.out
        sql/test/analytics/Tests/analytics09.stable.err
        sql/test/analytics/Tests/analytics09.stable.out
        sql/test/pg_regress/Tests/alter_table.stable.out
        sql/test/pg_regress/Tests/random.stable.out
        sql/test/pg_regress/Tests/select_views.stable.out
        sql/test/pg_regress/Tests/timestamp.stable.out
        sql/test/pg_regress/Tests/timestamptz.stable.out
        sql/test/sys-schema/Tests/bam_tables_checks.stable.out
        sql/test/sys-schema/Tests/check_AlternateKey_uniqueness.stable.out
        sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.sql
        
sql/test/sys-schema/Tests/check_ForeignKey_referential_integrity.stable.out
        sql/test/sys-schema/Tests/check_MaxStrLength_violations.stable.out
        sql/test/sys-schema/Tests/check_Not_Nullable_columns.sql
        sql/test/sys-schema/Tests/check_Not_Nullable_columns.stable.out
        sql/test/sys-schema/Tests/check_PrimaryKey_uniqueness.stable.out
Branch: cmake-monetdblite
Log Message:

Merge with cmake-fun.


diffs (truncated from 8427 to 300 lines):

diff --git a/clients/Tests/MAL-signatures.stable.out 
b/clients/Tests/MAL-signatures.stable.out
--- a/clients/Tests/MAL-signatures.stable.out
+++ b/clients/Tests/MAL-signatures.stable.out
@@ -612,6 +612,7 @@ stdout of test 'MAL-signatures` in direc
 [ "bat",       "delete",       "command bat.delete(b:bat[:any_1]):bat[:any_1] 
",       "BKCdelete_all;",       "Delete all entries."   ]
 [ "bat",       "delete",       "command bat.delete(b:bat[:any_1], 
d:bat[:oid]):bat[:any_1] ",  "BKCdelete_multi;",     "Delete multiple BUN, 
shifting BUNs up" ]
 [ "bat",       "densebat",     "command bat.densebat(sz:lng):bat[:oid] ",      
"BKCdensebat;", "Creates a new [void,void] BAT of size 'sz'."   ]
+[ "bat",       "diffcand",     "command bat.diffcand(a:bat[:oid], 
b:bat[:oid]):bat[:oid] ",    "BKCdiffcand;", "Calculate difference of two 
candidate lists"   ]
 [ "bat",       "getAccess",    "command bat.getAccess(b:bat[:any_1]):str ",    
"BKCgetAccess;",        "Return the access mode attached to this BAT as a 
character."   ]
 [ "bat",       "getCapacity",  "command bat.getCapacity(b:bat[:any_1]):lng ",  
"BKCgetCapacity;",      "Returns the current allocation size (in max number of 
elements) of a BAT."     ]
 [ "bat",       "getColumnType",        "command 
bat.getColumnType(b:bat[:any_1]):str ",        "BKCgetColumnType;",    "Returns 
the type of the tail column of a BAT, as an integer type number."      ]
diff --git a/clients/Tests/MAL-signatures.stable.out.int128 
b/clients/Tests/MAL-signatures.stable.out.int128
--- a/clients/Tests/MAL-signatures.stable.out.int128
+++ b/clients/Tests/MAL-signatures.stable.out.int128
@@ -716,6 +716,7 @@ stdout of test 'MAL-signatures` in direc
 [ "bat",       "delete",       "command bat.delete(b:bat[:any_1]):bat[:any_1] 
",       "BKCdelete_all;",       "Delete all entries."   ]
 [ "bat",       "delete",       "command bat.delete(b:bat[:any_1], 
d:bat[:oid]):bat[:any_1] ",  "BKCdelete_multi;",     "Delete multiple BUN, 
shifting BUNs up" ]
 [ "bat",       "densebat",     "command bat.densebat(sz:lng):bat[:oid] ",      
"BKCdensebat;", "Creates a new [void,void] BAT of size 'sz'."   ]
+[ "bat",       "diffcand",     "command bat.diffcand(a:bat[:oid], 
b:bat[:oid]):bat[:oid] ",    "BKCdiffcand;", "Calculate difference of two 
candidate lists"   ]
 [ "bat",       "getAccess",    "command bat.getAccess(b:bat[:any_1]):str ",    
"BKCgetAccess;",        "Return the access mode attached to this BAT as a 
character."   ]
 [ "bat",       "getCapacity",  "command bat.getCapacity(b:bat[:any_1]):lng ",  
"BKCgetCapacity;",      "Returns the current allocation size (in max number of 
elements) of a BAT."     ]
 [ "bat",       "getColumnType",        "command 
bat.getColumnType(b:bat[:any_1]):str ",        "BKCgetColumnType;",    "Returns 
the type of the tail column of a BAT, as an integer type number."      ]
diff --git a/clients/Tests/exports.stable.out b/clients/Tests/exports.stable.out
--- a/clients/Tests/exports.stable.out
+++ b/clients/Tests/exports.stable.out
@@ -106,6 +106,7 @@ dbl BATcalcvariance_population(dbl *avgp
 dbl BATcalcvariance_sample(dbl *avgp, BAT *b);
 BAT *BATcalcxor(BAT *b1, BAT *b2, BAT *s);
 BAT *BATcalcxorcst(BAT *b, const ValRecord *v, BAT *s);
+bool BATcandcontains(BAT *s, oid o);
 gdk_return BATclear(BAT *b, bool force);
 void BATcommit(BAT *b);
 BAT *BATconstant(oid hseq, int tt, const void *val, BUN cnt, role_t role);
@@ -114,6 +115,7 @@ BUN BATcount_no_nil(BAT *b);
 gdk_return BATdel(BAT *b, BAT *d) __attribute__((__warn_unused_result__));
 BAT *BATdense(oid hseq, oid tseq, BUN cnt) 
__attribute__((__warn_unused_result__));
 BAT *BATdiff(BAT *l, BAT *r, BAT *sl, BAT *sr, bool nil_matches, bool not_in, 
BUN estimate);
+BAT *BATdiffcand(BAT *a, BAT *b);
 gdk_return BATextend(BAT *b, BUN newcap) 
__attribute__((__warn_unused_result__));
 void BATfakeCommit(BAT *b);
 gdk_return BATfirstn(BAT **topn, BAT **gids, BAT *b, BAT *cands, BAT *grps, 
BUN n, bool asc, bool nilslast, bool distinct) 
__attribute__((__warn_unused_result__));
@@ -804,6 +806,7 @@ str BKCdelete(bat *r, const bat *bid, co
 str BKCdelete_all(bat *r, const bat *bid);
 str BKCdelete_multi(bat *r, const bat *bid, const bat *sid);
 str BKCdensebat(bat *ret, const lng *size);
+str BKCdiffcand(bat *ret, const bat *aid, const bat *bid);
 str BKCgetAccess(str *res, const bat *bid);
 str BKCgetBBPname(str *ret, const bat *bid);
 str BKCgetCapacity(lng *res, const bat *bid);
@@ -2094,6 +2097,7 @@ str deltaRef;
 str dense_rankRef;
 malType destinationType(MalBlkPtr mb, InstrPtr p);
 str diffRef;
+str diffcandRef;
 str differenceRef;
 str disconnectRef;
 str divRef;
diff --git a/clients/mapiclient/mhelp.c b/clients/mapiclient/mhelp.c
--- a/clients/mapiclient/mhelp.c
+++ b/clients/mapiclient/mhelp.c
@@ -59,10 +59,10 @@ SQLhelp sqlhelp1[] = {
         "See also https://www.monetdb.org/Documentation/SQLreference/Alter"},
        {"ALTER MERGE TABLE",
         "",
-        "ALTER TABLE [ IF EXISTS ] qname ADD TABLE qname [ AS PARTITION 
opt_partition_spec ]\n"
+        "ALTER TABLE [ IF EXISTS ] qname ADD TABLE qname [ AS PARTITION 
partition_spec ]\n"
         "ALTER TABLE [ IF EXISTS ] qname DROP TABLE qname [ RESTRICT | CASCADE 
]\n"
-        "ALTER TABLE [ IF EXISTS ] qname SET TABLE qname AS PARTITION 
opt_partition_spec",
-        "qname,opt_partition_spec",
+        "ALTER TABLE [ IF EXISTS ] qname SET TABLE qname AS PARTITION 
partition_spec",
+        "qname,partition_spec",
         "See also 
https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/DataPartitioning"},
        {"ALTER SCHEMA",
         "",
@@ -182,8 +182,8 @@ SQLhelp sqlhelp1[] = {
         "See also 
https://www.monetdb.org/blog/monetdbpython-loader-functions"},
        {"CREATE MERGE TABLE",
         "",
-        "CREATE MERGE TABLE [ IF NOT EXISTS ] qname table_source [ 
opt_partition_by ];",
-        "table_source,opt_partition_by",
+        "CREATE MERGE TABLE [ IF NOT EXISTS ] qname table_source [ 
partition_by ]",
+        "table_source,partition_by",
         "See also 
https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/DataPartitioning"},
        {"CREATE REMOTE TABLE",
         "",
@@ -192,7 +192,7 @@ SQLhelp sqlhelp1[] = {
         "remote name should match 
mapi:monetdb://host:port/database[/schema[/table]]"},
        {"CREATE REPLICA TABLE",
         "",
-        "CREATE REPLICA TABLE [ IF NOT EXISTS ] qname table_source;",
+        "CREATE REPLICA TABLE [ IF NOT EXISTS ] qname table_source",
         NULL,
         "See also 
https://www.monetdb.org/Documentation/Cookbooks/SQLrecipes/TransactionReplication"},
        {"CREATE ROLE",
@@ -303,8 +303,8 @@ SQLhelp sqlhelp1[] = {
         NULL},
        {"DELETE",
         "",
-        "[ WITH with_list ] DELETE FROM qname [ [AS] ident ] [ WHERE 
search_condition ]",
-        "with_list,search_condition",
+        "[ WITH cte_list ] DELETE FROM qname [ [AS] ident ] [ WHERE 
search_condition ]",
+        "cte_list,search_condition",
         NULL},
        {"DROP AGGREGATE",
         "",
@@ -384,8 +384,8 @@ SQLhelp sqlhelp1[] = {
         "See also 
https://www.monetdb.org/Documentation/SQLreference/Flowofcontrol"},
        {"INSERT",
         "",
-        "[ WITH with_list ] INSERT INTO qname [ column_list ] [ { DEFAULT 
VALUES | VALUES row_values | query_expression } ]",
-        "with_list,column_list,row_values,query_expression",
+        "[ WITH cte_list ] INSERT INTO qname [ column_list ] [ { DEFAULT 
VALUES | VALUES row_values | query_expression } ]",
+        "cte_list,column_list,row_values,query_expression",
         "See also https://www.monetdb.org/Documentation/SQLreference/Updates"},
        {"GRANT",
         "Define access privileges",
@@ -395,9 +395,9 @@ SQLhelp sqlhelp1[] = {
         "See also 
https://www.monetdb.org/Documentation/SQLreference/Permissions"},
        {"MERGE",
         "",
-        "[ WITH with_list ] MERGE INTO qname [ [AS] ident ] USING table_ref [ 
[AS] ident ] ON search_condition merge_list",
-        "with_list,table_ref,search_condition,merge_list",
-        NULL},
+        "[ WITH cte_list ] MERGE INTO qname [ [AS] ident ] USING table_ref [ 
[AS] ident ] ON search_condition merge_list",
+        "cte_list,table_ref,search_condition,merge_list",
+        "See also: 
https://www.monetdb.org/blog/sql2003_merge_statements_now_supported"},
        {"RELEASE SAVEPOINT",
         "",
         "RELEASE SAVEPOINT ident",
@@ -426,7 +426,7 @@ SQLhelp sqlhelp1[] = {
         NULL},
        {"SELECT",
         "",
-        "[ WITH with_list ]\n"
+        "[ WITH cte_list ]\n"
         "SELECT [ ALL | DISTINCT [ ON { expression [',' ...] } ] ]\n"
         "[ '*' | expression [ [ AS ] output_name ] [',' ...] ]\n"
         "[ FROM from_item [',' ...] ]\n"
@@ -439,7 +439,7 @@ SQLhelp sqlhelp1[] = {
         "[ LIMIT { count | param } ]\n"
         "[ OFFSET { count | param } ]\n"
         "[ SAMPLE size [ SEED size ] ]",
-        "with_list,expression,window_definition",
+        "cte_list,expression,window_definition",
         "See also 
https://www.monetdb.org/Documentation/SQLreference/TableExpressions"},
        {"SET",
         "Assign a value to a variable or column",
@@ -512,8 +512,8 @@ SQLhelp sqlhelp1[] = {
         NULL},
        {"UPDATE",
         "",
-        "[ WITH with_list ] UPDATE qname [ [AS] ident ] SET assignment_list [ 
WHERE search_condition ]",
-        "with_list,assignment_list,search_condition",
+        "[ WITH cte_list ] UPDATE qname [ [AS] ident ] SET assignment_list [ 
WHERE search_condition ]",
+        "cte_list,assignment_list,search_condition",
         NULL},
        {"VALUES",
         "",
@@ -674,16 +674,16 @@ SQLhelp sqlhelp2[] = {
         "MATCH { FULL | PARTIAL | SIMPLE }",
         NULL,
         NULL},
+       {"merge_list",
+        NULL,
+        "merge_clause [ merge_clause ]",
+        "merge_clause",
+        NULL},
        {"merge_clause",
         NULL,
-        "{ WHEN MATCHED [ AND search_condition ] THEN { UPDATE SET 
assignment_list | DELETE } } |\n"
-        "{ WHEN NOT MATCHED [ AND search_condition ] THEN INSERT [ column_list 
] [ { DEFAULT VALUES | VALUES row_values } ] }",
-        "search_condition,assignment_list,column_list,row_values",
-        NULL},
-       {"merge_list",
-        NULL,
-        "merge_clause [ ... ]",
-        "merge_clause",
+        "{ WHEN NOT MATCHED THEN INSERT [ column_list ] [ { VALUES row_values 
| DEFAULT VALUES } ]\n"
+        "| WHEN MATCHED THEN { UPDATE SET assignment_list | DELETE } }",
+        "column_list,row_values,assignment_list",
         NULL},
        {"nrofrecords",
         "",
@@ -695,18 +695,18 @@ SQLhelp sqlhelp2[] = {
         "ON COMMIT { DELETE ROWS | PRESERVE ROWS | DROP }",
         NULL,
         NULL},
-       {"opt_partition_by",
+       {"partition_by",
         NULL,
         "PARTITION BY { RANGE | VALUES } { ON '(' ident ')' | USING '(' 
query_expression ')' }",
         "query_expression",
-        NULL},
-       {"opt_partition_spec",
+        "See also: https://www.monetdb.org/blog/updatable-merge-tables"},
+       {"partition_spec",
         NULL,
-        "IN '(' partition_list ')' [ WITH NULL VALUES ]\n"
-        "FROM partition_range_from TO partition_range_to [ WITH NULL VALUES 
]\n"
-        "FOR NULL VALUES",
+        "{ IN '(' partition_list ')' [ WITH NULL VALUES ]\n"
+        "| FROM partition_range_from TO partition_range_to [ WITH NULL VALUES 
]\n"
+        "| FOR NULL VALUES }",
         "partition_list,partition_range_from,partition_range_to",
-        NULL},
+        "See also: https://www.monetdb.org/blog/updatable-merge-tables"},
        {"param",
         NULL,
         "ident data_type",
@@ -738,10 +738,27 @@ SQLhelp sqlhelp2[] = {
         "  declare | set_statement | control_statement | select_single_row } 
';'",
         
"transaction_statement,update_statement,grant,revoke,declare,set_statement,control_statement,select_single_row",
         NULL},
+       {"select_single_row",
+        NULL,
+        "SELECT [ ALL | DISTINCT ] column_exp_commalist INTO 
select_target_list [ from_clause ] [ window_clause ] [ where_clause ] [ 
group_by_clause ] [ having_clause ]",
+        
"column_exp_commalist,select_target_list,from_clause,window_clause,where_clause,group_by_clause,having_clause",
+        NULL},
        {"query_expression",
         NULL,
-        "with_query | select_no_parens_orderby",
+        "select_no_parens [ order_by_clause ] [ limit_clause ] [ offset_clause 
] [ sample_clause ]",
+        
"select_no_parens,order_by_clause,limit_clause,offset_clause,sample_clause",
+        NULL},
+       {"select_no_parens",
         NULL,
+        "{ SELECT [ ALL | DISTINCT ] column_exp_commalist [ from_clause ] [ 
window_clause ] [ where_clause ] [ group_by_clause ] [ having_clause ]\n"
+        "| select_no_parens { UNION | EXCEPT | INTERSECT } [ ALL | DISTINCT ] 
[ corresponding ] select_no_parens\n"
+        "| '(' select_no_parens ')' }",
+        
"column_exp_commalist,from_clause,window_clause,where_clause,group_by_clause,having_clause,corresponding",
+        NULL},
+       {"corresponding",
+        NULL,
+        "{ CORRESPONDING | CORRESPONDING BY '(' column_ref_commalist ')' }",
+        "column_ref_commalist",
         NULL},
        {"qname",
         NULL,
@@ -896,9 +913,9 @@ SQLhelp sqlhelp2[] = {
         "  [ EXCLUDING { CURRENT ROW | GROUP | TIES | NO OTHERS } ] ]",
         "window_bound,window_frame_start",
         NULL},
-       {"with_list",
+       {"cte_list",
         NULL,
-        "ident [ column_list ] AS query_expression [ ',' with_list ] ...",
+        "ident [ column_list ] AS query_expression [ ',' cte_list ] ...",
         "column_list,query_expression",
         NULL},
        {NULL, NULL, NULL, NULL, NULL}  /* End of list marker */
diff --git a/embedded/CMakeLists.txt b/embedded/CMakeLists.txt
--- a/embedded/CMakeLists.txt
+++ b/embedded/CMakeLists.txt
@@ -101,6 +101,7 @@ set(MONETDBLITE_TRANSLATION_UNITS
        ../gdk/gdk_batop.c
        ../gdk/gdk_bbp.c
        ../gdk/gdk_calc.c
+       ../gdk/gdk_cand.c
        ../gdk/gdk_cross.c
        ../gdk/gdk_delta.c
        ../gdk/gdk_firstn.c
diff --git a/gdk/CMakeLists.txt b/gdk/CMakeLists.txt
--- a/gdk/CMakeLists.txt
+++ b/gdk/CMakeLists.txt
@@ -18,7 +18,8 @@ add_library(gdk SHARED
                        gdk_calc.c gdk_calc.h gdk_calc_compare.h 
gdk_calc_private.h
                        gdk_ssort.c gdk_ssort_impl.h
                        gdk_aggr.c
-                       gdk.h gdk_cand.h gdk_batop.c
+                       gdk.h gdk_batop.c
+                       gdk_cand.h gdk_cand.c
                        gdk_search.c gdk_hash.c gdk_hash.h gdk_tm.c
                        gdk_orderidx.c
                        gdk_align.c gdk_bbp.c gdk_bbp.h
diff --git a/gdk/Makefile.ag b/gdk/Makefile.ag
--- a/gdk/Makefile.ag
+++ b/gdk/Makefile.ag
@@ -16,7 +16,8 @@ lib_gdk = {
                gdk_calc.c gdk_calc.h gdk_calc_compare.h gdk_calc_private.h \
                gdk_ssort.c gdk_ssort_impl.h \
                gdk_aggr.c \
-               gdk.h gdk_cand.h gdk_batop.c \
+               gdk.h gdk_batop.c \
+               gdk_cand.h gdk_cand.c \
                gdk_search.c gdk_hash.c gdk_hash.h gdk_tm.c \
                gdk_orderidx.c \
                gdk_align.c gdk_bbp.c gdk_bbp.h \
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -2713,6 +2713,8 @@ gdk_export BAT *BATunique(BAT *b, BAT *s
 
 gdk_export BAT *BATmergecand(BAT *a, BAT *b);
 gdk_export BAT *BATintersectcand(BAT *a, BAT *b);
+gdk_export BAT *BATdiffcand(BAT *a, BAT *b);
+gdk_export bool BATcandcontains(BAT *s, oid o);
 
 gdk_export gdk_return BATfirstn(BAT **topn, BAT **gids, BAT *b, BAT *cands, 
BAT *grps, BUN n, bool asc, bool nilslast, bool distinct)
        __attribute__((__warn_unused_result__));
diff --git a/gdk/gdk_batop.c b/gdk/gdk_batop.c
_______________________________________________
checkin-list mailing list
checkin-list@monetdb.org
https://www.monetdb.org/mailman/listinfo/checkin-list

Reply via email to