Changeset: f4050606dd9b for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f4050606dd9b Added Files: sql/test/BugTracker-2017/Tests/check_system_schema.Bug-6437.sql sql/test/BugTracker-2017/Tests/check_system_schema.Bug-6437.stable.err sql/test/BugTracker-2017/Tests/check_system_schema.Bug-6437.stable.out sql/test/BugTracker-2017/Tests/drop_schema_restrict.Bug-6438.sql sql/test/BugTracker-2017/Tests/drop_schema_restrict.Bug-6438.stable.err sql/test/BugTracker-2017/Tests/drop_schema_restrict.Bug-6438.stable.out sql/test/BugTracker-2017/Tests/drop_system_schema.Bug-6437.sql sql/test/BugTracker-2017/Tests/drop_system_schema.Bug-6437.stable.err sql/test/BugTracker-2017/Tests/drop_system_schema.Bug-6437.stable.out sql/test/mergetables/Tests/sqlsmith.Bug-6459.sql sql/test/mergetables/Tests/sqlsmith.Bug-6459.stable.err sql/test/mergetables/Tests/sqlsmith.Bug-6459.stable.out Modified Files: NT/mkgeomwxs.py NT/mkodbcwxs.py NT/mksqlwxs.py clients/mapiclient/dump.c clients/mapiclient/msqldump.h gdk/gdk_search.c monetdb5/mal/Tests/tst1002.stable.out monetdb5/mal/mal_factory.c monetdb5/mal/mal_import.c monetdb5/mal/mal_interpreter.c monetdb5/mal/mal_linker.c monetdb5/mal/mal_parser.c monetdb5/modules/atoms/batxml.c monetdb5/modules/atoms/json.c monetdb5/modules/atoms/mtime.c monetdb5/modules/kernel/aggr.c monetdb5/modules/kernel/algebra.c monetdb5/modules/kernel/bat5.c monetdb5/modules/kernel/batcolor.c monetdb5/modules/kernel/batmmath.c monetdb5/modules/kernel/batstr.c monetdb5/modules/kernel/group.c monetdb5/modules/kernel/microbenchmark.c monetdb5/modules/mal/batcalc.c monetdb5/modules/mal/bbp.c monetdb5/modules/mal/calc.c monetdb5/modules/mal/factories.c monetdb5/modules/mal/language.c monetdb5/modules/mal/mal_io.c monetdb5/modules/mal/mal_mapi.c monetdb5/modules/mal/mat.c monetdb5/modules/mal/mkey.c monetdb5/modules/mal/orderidx.c monetdb5/modules/mal/pcre.c monetdb5/modules/mal/profiler.c monetdb5/modules/mal/remote.c monetdb5/modules/mal/transaction.c monetdb5/modules/mal/txtsim.c monetdb5/modules/mal/wlc.c monetdb5/optimizer/opt_mergetable.c monetdb5/optimizer/opt_multiplex.c monetdb5/optimizer/opt_pipes.c sql/ChangeLog sql/backends/monet5/UDF/pyapi/convert_loops.h sql/backends/monet5/sql.c sql/backends/monet5/sql_cat.c sql/backends/monet5/sql_execute.c sql/backends/monet5/sql_scenario.c sql/backends/monet5/sql_upgrades.c sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out sql/benchmarks/tpch/fileleak/Tests/leaks.stable.out.Windows sql/server/rel_optimizer.c sql/server/rel_select.c sql/server/sql_parser.y sql/test/BugTracker-2015/Tests/crash.Bug-3736.stable.out sql/test/BugTracker-2017/Tests/All sql/test/BugTracker-2017/Tests/caching_stats_bug.6374.stable.out sql/test/BugTracker-2017/Tests/sqlitelogictest-aggregation-distinct-coalesce.Bug-6431.stable.err sql/test/BugTracker-2017/Tests/sqllitelogistest_case.Bug-6335.stable.err sql/test/BugTracker-2017/Tests/table_returning_with.Bug-6444.stable.err sql/test/BugTracker-2017/Tests/udf_crash_subquery_scalar_paramters.Bug-6399.stable.err sql/test/BugTracker/Tests/jdbc_no_debug.SF-1739356.stable.out sql/test/UserDump/Tests/create.SQL.py sql/test/leaks/Tests/check1.stable.out.int128 sql/test/mergetables/Tests/All sql/test/pg_regress/Tests/strings.stable.err sql/test/pg_regress/Tests/strings.stable.err.int128 Branch: jitudf Log Message:
Merge with default. diffs (truncated from 4482 to 300 lines): diff --git a/NT/mkgeomwxs.py b/NT/mkgeomwxs.py --- a/NT/mkgeomwxs.py +++ b/NT/mkgeomwxs.py @@ -52,7 +52,16 @@ def main(): print(r' INSTALLDIR') print(r' </Condition>') print(r' <Directory Id="TARGETDIR" Name="SourceDir">') - print(r' <Merge Id="VCRedist" DiskId="1" Language="0" SourceFile="C:\Program Files (x86)\Common Files\Merge Modules\Microsoft_VC%s0_CRT_%s.msm"/>' % (vs, arch)) + if vs == '17': + msvc = r'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC' + d = sorted(os.listdir(msvc))[-1] + msm = '_CRT_%s.msm' % arch + for f in sorted(os.listdir(os.path.join(msvc, d, 'MergeModules'))): + if msm in f: + fn = f + print(r' <Merge Id="VCRedist" DiskId="1" Language="0" SourceFile="%s\%s\MergeModules\%s"/>' % (msvc, d, fn)) + else: + print(r' <Merge Id="VCRedist" DiskId="1" Language="0" SourceFile="C:\Program Files (x86)\Common Files\Merge Modules\Microsoft_VC%s0_CRT_%s.msm"/>' % (vs, arch)) print(r' <Directory Id="%s">' % folder) print(r' <Directory Id="ProgramFilesMonetDB" Name="MonetDB">') print(r' <Directory Id="INSTALLDIR" Name="MonetDB5">') diff --git a/NT/mkodbcwxs.py b/NT/mkodbcwxs.py --- a/NT/mkodbcwxs.py +++ b/NT/mkodbcwxs.py @@ -51,7 +51,16 @@ def main(): print(r' <CustomAction Id="driverinstall" FileKey="odbcinstall" ExeCommand="/Install" Execute="deferred" Impersonate="no"/>') print(r' <CustomAction Id="driveruninstall" FileKey="odbcinstall" ExeCommand="/Uninstall" Execute="deferred" Impersonate="no"/>') print(r' <Directory Id="TARGETDIR" Name="SourceDir">') - print(r' <Merge Id="VCRedist" DiskId="1" Language="0" SourceFile="C:\Program Files (x86)\Common Files\Merge Modules\Microsoft_VC%s0_CRT_%s.msm"/>' % (vs, arch)) + if vs == '17': + msvc = r'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC' + d = sorted(os.listdir(msvc))[-1] + msm = '_CRT_%s.msm' % arch + for f in sorted(os.listdir(os.path.join(msvc, d, 'MergeModules'))): + if msm in f: + fn = f + print(r' <Merge Id="VCRedist" DiskId="1" Language="0" SourceFile="%s\%s\MergeModules\%s"/>' % (msvc, d, fn)) + else: + print(r' <Merge Id="VCRedist" DiskId="1" Language="0" SourceFile="C:\Program Files (x86)\Common Files\Merge Modules\Microsoft_VC%s0_CRT_%s.msm"/>' % (vs, arch)) print(r' <Directory Id="%s">' % folder) print(r' <Directory Id="ProgramFilesMonetDB" Name="MonetDB">') print(r' <Directory Id="INSTALLDIR" Name="MonetDB ODBC Driver">') diff --git a/NT/mksqlwxs.py b/NT/mksqlwxs.py --- a/NT/mksqlwxs.py +++ b/NT/mksqlwxs.py @@ -52,7 +52,16 @@ def main(): print(r' <Property Id="ARPPRODUCTICON" Value="monetdb.ico"/>') print(r' <Media Id="1" Cabinet="monetdb.cab" EmbedCab="yes"/>') print(r' <Directory Id="TARGETDIR" Name="SourceDir">') - print(r' <Merge Id="VCRedist" DiskId="1" Language="0" SourceFile="C:\Program Files (x86)\Common Files\Merge Modules\Microsoft_VC%s0_CRT_%s.msm"/>' % (vs, arch)) + if vs == '17': + msvc = r'C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Redist\MSVC' + d = sorted(os.listdir(msvc))[-1] + msm = '_CRT_%s.msm' % arch + for f in sorted(os.listdir(os.path.join(msvc, d, 'MergeModules'))): + if msm in f: + fn = f + print(r' <Merge Id="VCRedist" DiskId="1" Language="0" SourceFile="%s\%s\MergeModules\%s"/>' % (msvc, d, fn)) + else: + print(r' <Merge Id="VCRedist" DiskId="1" Language="0" SourceFile="C:\Program Files (x86)\Common Files\Merge Modules\Microsoft_VC%s0_CRT_%s.msm"/>' % (vs, arch)) print(r' <Directory Id="%s">' % folder) print(r' <Directory Id="ProgramFilesMonetDB" Name="MonetDB">') print(r' <Directory Id="INSTALLDIR" Name="MonetDB5">') diff --git a/clients/mapiclient/dump.c b/clients/mapiclient/dump.c --- a/clients/mapiclient/dump.c +++ b/clients/mapiclient/dump.c @@ -235,16 +235,16 @@ dump_foreign_keys(Mapi mid, const char * cnt = mapi_fetch_row(hdl); while (cnt != 0) { - char *c_psname = mapi_fetch_field(hdl, 0); - char *c_ptname = mapi_fetch_field(hdl, 1); - char *c_pcolumn = mapi_fetch_field(hdl, 2); - char *c_fcolumn = mapi_fetch_field(hdl, 3); - char *c_nr = mapi_fetch_field(hdl, 4); - char *c_fkname = mapi_fetch_field(hdl, 5); - char *c_faction = mapi_fetch_field(hdl, 6); - char *c_fsname = mapi_fetch_field(hdl, 7); - char *c_ftname = mapi_fetch_field(hdl, 8); - char **fkeys, **pkeys; + const char *c_psname = mapi_fetch_field(hdl, 0); + const char *c_ptname = mapi_fetch_field(hdl, 1); + const char *c_pcolumn = mapi_fetch_field(hdl, 2); + const char *c_fcolumn = mapi_fetch_field(hdl, 3); + const char *c_nr = mapi_fetch_field(hdl, 4); + const char *c_fkname = mapi_fetch_field(hdl, 5); + const char *c_faction = mapi_fetch_field(hdl, 6); + const char *c_fsname = mapi_fetch_field(hdl, 7); + const char *c_ftname = mapi_fetch_field(hdl, 8); + const char **fkeys, **pkeys; int nkeys = 0; if (mapi_error(mid)) @@ -258,8 +258,8 @@ dump_foreign_keys(Mapi mid, const char * fkeys[nkeys - 1] = c_fcolumn; while ((cnt = mapi_fetch_row(hdl)) != 0 && strcmp(mapi_fetch_field(hdl, 4), "0") != 0) { nkeys++; - pkeys = realloc(pkeys, nkeys * sizeof(*pkeys)); - fkeys = realloc(fkeys, nkeys * sizeof(*fkeys)); + pkeys = realloc((void *) pkeys, nkeys * sizeof(*pkeys)); + fkeys = realloc((void *) fkeys, nkeys * sizeof(*fkeys)); pkeys[nkeys - 1] = mapi_fetch_field(hdl, 2); fkeys[nkeys - 1] = mapi_fetch_field(hdl, 3); } @@ -286,8 +286,8 @@ dump_foreign_keys(Mapi mid, const char * i > 0 ? ", " : "", pkeys[i]); } mnstr_printf(toConsole, ")"); - free(fkeys); - free(pkeys); + free((void *) fkeys); + free((void *) pkeys); if (c_faction) { int action = atoi(c_faction); int on_update; @@ -366,7 +366,7 @@ static const char *geomsubtypes[] = { }; static int -dump_type(Mapi mid, stream *toConsole, char *c_type, char *c_type_digits, char *c_type_scale, int hashge) +dump_type(Mapi mid, stream *toConsole, const char *c_type, const char *c_type_digits, const char *c_type_scale, int hashge) { int space = 0; @@ -555,12 +555,12 @@ dump_column_definition(Mapi mid, stream slen = mapi_get_len(hdl, 0); cnt = 0; while ((mapi_fetch_row(hdl)) != 0) { - char *c_name = mapi_fetch_field(hdl, 0); - char *c_type = mapi_fetch_field(hdl, 1); - char *c_type_digits = mapi_fetch_field(hdl, 2); - char *c_type_scale = mapi_fetch_field(hdl, 3); - char *c_null = mapi_fetch_field(hdl, 4); - char *c_default = mapi_fetch_field(hdl, 5); + const char *c_name = mapi_fetch_field(hdl, 0); + const char *c_type = mapi_fetch_field(hdl, 1); + const char *c_type_digits = mapi_fetch_field(hdl, 2); + const char *c_type_scale = mapi_fetch_field(hdl, 3); + const char *c_null = mapi_fetch_field(hdl, 4); + const char *c_default = mapi_fetch_field(hdl, 5); int space; if (mapi_error(mid)) @@ -624,8 +624,8 @@ dump_column_definition(Mapi mid, stream goto bailout; cnt = 0; while ((mapi_fetch_row(hdl)) != 0) { - char *c_column = mapi_fetch_field(hdl, 0); - char *k_name = mapi_fetch_field(hdl, 2); + const char *c_column = mapi_fetch_field(hdl, 0); + const char *k_name = mapi_fetch_field(hdl, 2); if (mapi_error(mid)) goto bailout; @@ -683,9 +683,9 @@ dump_column_definition(Mapi mid, stream goto bailout; cnt = 0; while ((mapi_fetch_row(hdl)) != 0) { - char *c_column = mapi_fetch_field(hdl, 0); - char *kc_nr = mapi_fetch_field(hdl, 1); - char *k_name = mapi_fetch_field(hdl, 2); + const char *c_column = mapi_fetch_field(hdl, 0); + const char *kc_nr = mapi_fetch_field(hdl, 1); + const char *k_name = mapi_fetch_field(hdl, 2); if (mapi_error(mid)) goto bailout; @@ -738,7 +738,7 @@ dump_column_definition(Mapi mid, stream } int -describe_table(Mapi mid, char *schema, char *tname, stream *toConsole, int foreign) +describe_table(Mapi mid, const char *schema, const char *tname, stream *toConsole, int foreign) { int cnt; MapiHdl hdl = NULL; @@ -847,10 +847,10 @@ describe_table(Mapi mid, char *schema, c goto bailout; cnt = 0; while (mapi_fetch_row(hdl) != 0) { - char *i_name = mapi_fetch_field(hdl, 0); - char *k_name = mapi_fetch_field(hdl, 1); - char *kc_nr = mapi_fetch_field(hdl, 2); - char *c_name = mapi_fetch_field(hdl, 3); + const char *i_name = mapi_fetch_field(hdl, 0); + const char *k_name = mapi_fetch_field(hdl, 1); + const char *kc_nr = mapi_fetch_field(hdl, 2); + const char *c_name = mapi_fetch_field(hdl, 3); if (mapi_error(mid)) goto bailout; @@ -907,7 +907,7 @@ describe_table(Mapi mid, char *schema, c } int -describe_sequence(Mapi mid, char *schema, char *tname, stream *toConsole) +describe_sequence(Mapi mid, const char *schema, const char *tname, stream *toConsole) { MapiHdl hdl = NULL; char *query; @@ -951,13 +951,13 @@ describe_sequence(Mapi mid, char *schema goto bailout; while (mapi_fetch_row(hdl) != 0) { - char *schema = mapi_fetch_field(hdl, 0); - char *name = mapi_fetch_field(hdl, 1); - char *start = mapi_fetch_field(hdl, 2); - char *minvalue = mapi_fetch_field(hdl, 3); - char *maxvalue = mapi_fetch_field(hdl, 4); - char *increment = mapi_fetch_field(hdl, 5); - char *cycle = mapi_fetch_field(hdl, 6); + const char *schema = mapi_fetch_field(hdl, 0); + const char *name = mapi_fetch_field(hdl, 1); + const char *start = mapi_fetch_field(hdl, 2); + const char *minvalue = mapi_fetch_field(hdl, 3); + const char *maxvalue = mapi_fetch_field(hdl, 4); + const char *increment = mapi_fetch_field(hdl, 5); + const char *cycle = mapi_fetch_field(hdl, 6); mnstr_printf(toConsole, "CREATE SEQUENCE \"%s\".\"%s\" START WITH %s", @@ -1002,7 +1002,7 @@ bailout: } int -describe_schema(Mapi mid, char *sname, stream *toConsole) +describe_schema(Mapi mid, const char *sname, stream *toConsole) { MapiHdl hdl = NULL; char schemas[256]; @@ -1030,8 +1030,8 @@ describe_schema(Mapi mid, char *sname, s } while (mapi_fetch_row(hdl) != 0) { - char *sname = mapi_fetch_field(hdl, 0); - char *aname = mapi_fetch_field(hdl, 1); + const char *sname = mapi_fetch_field(hdl, 0); + const char *aname = mapi_fetch_field(hdl, 1); mnstr_printf(toConsole, "CREATE SCHEMA \"%s\"", sname); if (strcmp(aname, "sysadmin") != 0) { @@ -1045,7 +1045,7 @@ describe_schema(Mapi mid, char *sname, s } static int -dump_table_data(Mapi mid, char *schema, char *tname, stream *toConsole, +dump_table_data(Mapi mid, const char *schema, const char *tname, stream *toConsole, const char useInserts) { int cnt, i; @@ -1106,7 +1106,7 @@ dump_table_data(Mapi mid, char *schema, if ((hdl = mapi_query(mid, query)) == NULL || mapi_error(mid)) goto bailout; if (mapi_fetch_row(hdl)) { - char *cntfld = mapi_fetch_field(hdl, 0); + const char *cntfld = mapi_fetch_field(hdl, 0); if (strcmp(cntfld, "0") == 0) { /* no records to dump, so return early */ @@ -1203,7 +1203,7 @@ dump_table_data(Mapi mid, char *schema, } int -dump_table(Mapi mid, char *schema, char *tname, stream *toConsole, int describe, int foreign, const char useInserts) +dump_table(Mapi mid, const char *schema, const char *tname, stream *toConsole, int describe, int foreign, const char useInserts) { int rc; @@ -1213,72 +1213,209 @@ dump_table(Mapi mid, char *schema, char return rc; } +static int +dump_function(Mapi mid, stream *toConsole, const char *sname, const char *fname, int hashge) +{ + MapiHdl hdl; + size_t qlen = 200 + strlen(sname) + strlen(fname); + char *query = malloc(qlen); + const char *sep; + char *fid, *ffunc; + int flang, ftype; + + snprintf(query, qlen, "select f.id, f.func, f.language, f.type from sys.functions f, sys.schemas s where f.schema_id = s.id and s.name = '%s' and f.name = '%s'", sname, fname); + hdl = mapi_query(mid, query); + if (mapi_fetch_row(hdl) == 0) { + free(query); + mapi_close_handle(hdl); + return 0; /* no such function, apparently */ + } + fid = mapi_fetch_field(hdl, 0); + ffunc = mapi_fetch_field(hdl, 1); + flang = atoi(mapi_fetch_field(hdl, 2)); + ftype = atoi(mapi_fetch_field(hdl, 3)); + if (flang == 1 || flang == 2) { + /* all information is stored in the func column */ + mnstr_printf(toConsole, "%s\n", ffunc); + mapi_close_handle(hdl); + return 0; + } + mnstr_printf(toConsole, "CREATE "); _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list