Changeset: ced3016179b8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ced3016179b8
Modified Files:
sql/server/rel_select.c
Branch: ordered-set-aggregates
Log Message:
Merge with default branch.
diffs (truncated from 4844 to 300 lines):
diff --git a/sql/backends/monet5/vaults/csv/csv.c
b/sql/backends/monet5/vaults/csv/csv.c
--- a/sql/backends/monet5/vaults/csv/csv.c
+++ b/sql/backends/monet5/vaults/csv/csv.c
@@ -37,15 +37,17 @@ csv_open_file(char* filename)
static const char *
next_delim(const char *s, const char *e, char delim, char quote)
{
- bool inquote = false;
- for(; s < e; s++) {
- if (*s == quote)
- inquote = !inquote;
- else if (!inquote && *s == delim)
+ if (s && e) {
+ bool inquote = false;
+ for(; s < e; s++) {
+ if (*s == quote)
+ inquote = !inquote;
+ else if (!inquote && *s == delim)
+ return s;
+ }
+ if (s <= e)
return s;
}
- if (s <= e)
- return s;
return NULL;
}
@@ -242,6 +244,7 @@ detect_time(const char *s, const char *e
static bool
detect_date(const char *s, const char *e)
{
+ /* TODO detect negative years */
if ((e-s) != 10)
return false;
/* YYYY-MM-DD */
@@ -256,6 +259,7 @@ detect_date(const char *s, const char *e
static bool
detect_timestamp(const char *s, const char *e)
{
+ /* TODO detect negative years */
if ((e-s) != 16)
return false;
/* DATE TIME */
@@ -276,24 +280,26 @@ detect_types_row(const char *s, const ch
int scale = 0;
types[i].type = CSV_STRING;
- if (n) {
+ types[i].scale = 0;
+ if (n && s) {
if (detect_null(s,n))
types[i].type = CSV_NULL;
else if (detect_bool(s,n))
types[i].type = CSV_BOOLEAN;
else if (detect_bigint(s, n))
types[i].type = CSV_BIGINT;
- else if (detect_decimal(s, n, &scale))
+ else if (detect_decimal(s, n, &scale)) {
types[i].type = CSV_DECIMAL;
+ types[i].scale = scale;
+ }
else if (detect_time(s, n))
types[i].type = CSV_TIME;
else if (detect_date(s, n))
types[i].type = CSV_DATE;
else if (detect_timestamp(s, n))
types[i].type = CSV_TIMESTAMP;
- types[i].scale = scale;
+ s = n+1;
}
- s = n+1;
}
return types;
}
@@ -310,7 +316,7 @@ detect_types(const char *buf, char delim
if (!e)
break;
- csv_type *ntypes = detect_types_row( cur, e, delim, quote,
nr_fields);
+ csv_type *ntypes = detect_types_row(cur, e, delim, quote,
nr_fields);
if (!ntypes)
return NULL;
cur = e+1;
@@ -397,9 +403,7 @@ static str
csv_relation(mvc *sql, sql_subfunc *f, char *filename, list *res_exps, char
*tname)
{
stream *file = csv_open_file(filename);
- char buf[8196+1];
-
- if(file == NULL)
+ if (file == NULL)
return RUNTIME_FILE_NOT_FOUND;
/*
@@ -407,6 +411,7 @@ csv_relation(mvc *sql, sql_subfunc *f, c
* detect types
* detect header
*/
+ char buf[8196+1];
ssize_t l = mnstr_read(file, buf, 1, 8196);
mnstr_close(file);
mnstr_destroy(file);
@@ -424,7 +429,7 @@ csv_relation(mvc *sql, sql_subfunc *f, c
f->tname = tname;
- const char *p = buf, *ep = strchr(p, '\n');;
+ const char *p = buf, *ep = strchr(p, '\n');
list *typelist = sa_list(sql->sa);
list *nameslist = sa_list(sql->sa);
for(int col = 0; col < nr_fields; col++) {
@@ -447,12 +452,12 @@ csv_relation(mvc *sql, sql_subfunc *f, c
list_append(res_exps, ne);
} else {
GDKfree(types);
- throw(SQL, SQLSTATE(42000), "csv" "type %s not
found\n", st);
+ return sa_message(sql->sa, "csv" "type %s not
found\n", st);
}
} else {
/* shouldn't be possible, we fallback to strings */
GDKfree(types);
- throw(SQL, SQLSTATE(42000), "csv" "type unknown\n");
+ return sa_message(sql->sa, "csv" "type unknown\n");
}
}
GDKfree(types);
@@ -467,7 +472,7 @@ csv_relation(mvc *sql, sql_subfunc *f, c
r->extra_tsep = extra_tsep;
r->has_header = has_header;
f->sname = (char*)r; /* pass schema++ */
- return MAL_SUCCEED;
+ return NULL;
}
static void *
@@ -479,7 +484,6 @@ csv_load(void *BE, sql_subfunc *f, char
sql_table *t = NULL;
if (mvc_create_table( &t, be->mvc, be->mvc->session->tr->tmp/* misuse
tmp schema */, f->tname /*gettable name*/, tt_table, false, SQL_DECLARED_TABLE,
0, 0, false) != LOG_OK)
- //throw(SQL, SQLSTATE(42000), "csv" RUNTIME_FILE_NOT_FOUND);
/* alloc error */
return NULL;
@@ -490,7 +494,6 @@ csv_load(void *BE, sql_subfunc *f, char
sql_column *c = NULL;
if (!tp || mvc_create_column(&c, be->mvc, t, name, tp) !=
LOG_OK) {
- //throw(SQL, SQLSTATE(42000), "csv" RUNTIME_LOAD_ERROR);
return NULL;
}
}
diff --git a/sql/server/rel_select.c b/sql/server/rel_select.c
--- a/sql/server/rel_select.c
+++ b/sql/server/rel_select.c
@@ -1702,14 +1702,12 @@ push_join_exp(mvc *sql, sql_rel *rel, sq
static sql_rel *
rel_select_push_filter_exp_down(mvc *sql, sql_rel *rel, sql_exp *e, list *l,
list *r, int ff)
{
- sql_exp *ll, *rr;
+ sql_exp *ll;
if (exps_card(r) <= CARD_ATOM && (exps_are_atoms(r) ||
exps_have_freevar(sql, r) || exps_have_freevar(sql, l))) {
if (exps_card(l) == exps_card(r) || rel->processed) /* bin
compare op */
return rel_select(sql->sa, rel, e);
if ((ll = exps_find_one_multi_exp(l)))
return push_select_exp(sql, rel, e, ll, ff);
- } else if ((ll = exps_find_one_multi_exp(l)) && (rr =
exps_find_one_multi_exp(r))) { /* join */
- return push_join_exp(sql, rel, e, ll, rr, NULL, ff);
}
if (is_outerjoin(rel->op))
return rel_select(sql->sa, rel, e);
diff --git a/sql/test/BugTracker-2009/Tests/mclient-lsql-D.stable.out
b/sql/test/BugTracker-2009/Tests/mclient-lsql-D.stable.out
--- a/sql/test/BugTracker-2009/Tests/mclient-lsql-D.stable.out
+++ b/sql/test/BugTracker-2009/Tests/mclient-lsql-D.stable.out
@@ -1,33 +1,3 @@
-stdout of test 'mclient-lsql-D` in directory 'sql/test/BugTracker-2009` itself:
-
-
-# 21:51:00 >
-# 21:51:00 > mserver5
"--config=/ufs/niels/scratch/rc/Linux-x86_64/etc/monetdb5.conf" --debug=10
--set gdk_nr_threads=0 --set
"monet_mod_path=/ufs/niels/scratch/rc/Linux-x86_64/lib/MonetDB5:/ufs/niels/scratch/rc/Linux-x86_64/lib/MonetDB5/lib:/ufs/niels/scratch/rc/Linux-x86_64/lib/MonetDB5/bin"
--set "gdk_dbfarm=/ufs/niels/scratch/rc/Linux-x86_64/var/MonetDB5/dbfarm"
--set mapi_open=true --set xrpc_open=true --set mapi_port=38418 --set
xrpc_port=47399 --set monet_prompt= --trace
"--dbname=mTests_src_test_BugTracker-2009" --set mal_listing=0 "--dbinit=
include sql;" ; echo ; echo Over..
-# 21:51:00 >
-
-# MonetDB server v5.12.0, based on kernel v1.30.0
-# Serving database 'mTests_src_test_BugTracker-2009', using 4 threads
-# Compiled for x86_64-unknown-linux-gnu/64bit with 64bit OIDs dynamically
linked
-# Copyright (c) 1993-July 2008 CWI.
-# Copyright (c) August 2008-2009 MonetDB B.V., all rights reserved
-# Visit http://monetdb.cwi.nl/ for further information
-# Listening for connection requests on mapi:monetdb://alf.ins.cwi.nl:38418/
-# MonetDB/SQL module v2.30.1 loaded
-
-#function user.main():void;
-# clients.quit();
-#end main;
-
-
-# 21:51:00 >
-# 21:51:00 > ./mclient-lsql-D.SQL.sh mclient-lsql-D
-# 21:51:00 >
-
-
-# 21:51:00 >
-# 21:51:00 > Mtimeout -timeout 60 mclient -lsql -umonetdb -Pmonetdb
--host=alf --port=38418 -D < /dev/null
-# 21:51:00 >
-
START TRANSACTION;
SET SCHEMA "sys";
CREATE TABLE "sys"."table_a" (
@@ -58,8 +28,3 @@ ALTER TABLE "sys"."table_c" ADD CONSTRAI
ALTER TABLE "sys"."table_c" ADD CONSTRAINT "fk_table_c_table_d_id" FOREIGN KEY
("table_d_id") REFERENCES "sys"."table_b" ("table_b_id");
ALTER TABLE "sys"."table_d" ADD CONSTRAINT "fk_table_d_table_a_id" FOREIGN KEY
("table_a_id") REFERENCES "sys"."table_a" ("table_a_id");
COMMIT;
-
-# 21:51:00 >
-# 21:51:00 > Done.
-# 21:51:00 >
-
diff --git
a/sql/test/BugTracker-2019/Tests/msqldump-mapi-cache.Bug-6777.stable.out
b/sql/test/BugTracker-2019/Tests/msqldump-mapi-cache.Bug-6777.stable.out
--- a/sql/test/BugTracker-2019/Tests/msqldump-mapi-cache.Bug-6777.stable.out
+++ b/sql/test/BugTracker-2019/Tests/msqldump-mapi-cache.Bug-6777.stable.out
@@ -1,523 +1,3 @@
-stdout of test 'msqldump-mapi-cache.Bug-6777` in directory
'sql/test/BugTracker-2019` itself:
-
-
-# 10:39:12 >
-# 10:39:12 > "/usr/bin/python3" "msqldump-mapi-cache.Bug-6777.py"
"msqldump-mapi-cache.Bug-6777"
-# 10:39:12 >
-
-#start transaction;
-#create table dbgen_version
-#(
-# dv_version varchar(16),
-# dv_create_date date,
-# dv_create_time time,
-# dv_cmdline_args varchar(200)
-#);
-#create table customer_address
-#(
-# ca_address_sk integer not null,
-# ca_address_id char(16) not null,
-# ca_street_number char(10),
-# ca_street_name varchar(60),
-# ca_street_type char(15),
-# ca_suite_number char(10),
-# ca_city varchar(60),
-# ca_county varchar(30),
-# ca_state char(2),
-# ca_zip char(10),
-# ca_country varchar(20),
-# ca_gmt_offset decimal(5,2),
-# ca_location_type char(20),
-# primary key (ca_address_sk)
-#);
-#create table customer_demographics
-#(
-# cd_demo_sk integer not null,
-# cd_gender char(1),
-# cd_marital_status char(1),
-# cd_education_status char(20),
-# cd_purchase_estimate integer,
-# cd_credit_rating char(10),
-# cd_dep_count integer,
-# cd_dep_employed_count integer,
-# cd_dep_college_count integer,
-# primary key (cd_demo_sk)
-#);
-#create table date_dim
-#(
-# d_date_sk integer not null,
-# d_date_id char(16) not null,
-# d_date date,
-# d_month_seq integer,
-# d_week_seq integer,
-# d_quarter_seq integer,
-# d_year integer,
-# d_dow integer,
-# d_moy integer,
-# d_dom integer,
-# d_qoy integer,
-# d_fy_year integer,
-# d_fy_quarter_seq integer,
-# d_fy_week_seq integer,
-# d_day_name char(9),
-# d_quarter_name char(6),
-# d_holiday char(1),
-# d_weekend char(1),
-# d_following_holiday char(1),
-# d_first_dom integer,
-# d_last_dom integer,
-# d_same_day_ly integer,
-# d_same_day_lq integer,
-#create table warehouse
-#(
-# w_warehouse_sk integer not null,
-# w_warehouse_id char(16) not null,
-# w_warehouse_name varchar(20),
-# w_warehouse_sq_ft integer,
-# w_street_number char(10),
-# w_street_name varchar(60),
-# w_street_type char(15),
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]