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

Reply via email to