Changeset: 03f2aa59b0b8 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=03f2aa59b0b8
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_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
sql/backends/monet5/UDF/pyapi/convert_loops.h
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/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
Branch: default
Log Message:
Merge with Jul2017 branch.
diffs (truncated from 1871 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))
@@ -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 ");
+ switch (ftype) {
+ case 1: /* scalar function */
+ case 5: /* table returning function */
+ mnstr_printf(toConsole, "FUNCTION");
+ break;
+ case 2:
+ mnstr_printf(toConsole, "PROCEDURE");
+ break;
+ case 3:
+ mnstr_printf(toConsole, "AGGREGATE");
+ break;
+ case 4:
+ mnstr_printf(toConsole, "FILTER FUNCTION");
+ break;
+ case 7:
+ mnstr_printf(toConsole, "LOADER");
+ break;
+ default:
+ /* shouldn't happen (6 is F_ANALYTIC, but no syntax to
+ * create, or values are not defined) */
+ free(query);
+ mapi_close_handle(hdl);
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list