Changeset: 0665312ee4d1 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=0665312ee4d1
Added Files:
sql/backends/monet5/UDF/capi/50_capi.mal
sql/backends/monet5/UDF/capi/Makefile.ag
sql/backends/monet5/UDF/capi/Tests/All
sql/backends/monet5/UDF/capi/Tests/capi00.sql
sql/backends/monet5/UDF/capi/Tests/capi00.stable.err
sql/backends/monet5/UDF/capi/Tests/capi00.stable.out
sql/backends/monet5/UDF/capi/Tests/capi01.sql
sql/backends/monet5/UDF/capi/Tests/capi01.stable.err
sql/backends/monet5/UDF/capi/Tests/capi01.stable.out
sql/backends/monet5/UDF/capi/Tests/capi02.sql
sql/backends/monet5/UDF/capi/Tests/capi02.stable.err
sql/backends/monet5/UDF/capi/Tests/capi02.stable.out
sql/backends/monet5/UDF/capi/Tests/capi03.sql
sql/backends/monet5/UDF/capi/Tests/capi03.stable.err
sql/backends/monet5/UDF/capi/Tests/capi03.stable.out
sql/backends/monet5/UDF/capi/Tests/capi04.sql
sql/backends/monet5/UDF/capi/Tests/capi04.stable.err
sql/backends/monet5/UDF/capi/Tests/capi04.stable.out
sql/backends/monet5/UDF/capi/Tests/capi05.sql
sql/backends/monet5/UDF/capi/Tests/capi05.stable.err
sql/backends/monet5/UDF/capi/Tests/capi05.stable.out
sql/backends/monet5/UDF/capi/Tests/capi06.sql
sql/backends/monet5/UDF/capi/Tests/capi06.stable.err
sql/backends/monet5/UDF/capi/Tests/capi06.stable.out
sql/backends/monet5/UDF/capi/Tests/capi07.sql
sql/backends/monet5/UDF/capi/Tests/capi07.stable.err
sql/backends/monet5/UDF/capi/Tests/capi07.stable.out
sql/backends/monet5/UDF/capi/Tests/capi08.sql
sql/backends/monet5/UDF/capi/Tests/capi08.stable.err
sql/backends/monet5/UDF/capi/Tests/capi08.stable.out
sql/backends/monet5/UDF/capi/Tests/capi09.sql
sql/backends/monet5/UDF/capi/Tests/capi09.stable.err
sql/backends/monet5/UDF/capi/Tests/capi09.stable.out
sql/backends/monet5/UDF/capi/Tests/capi10.sql
sql/backends/monet5/UDF/capi/Tests/capi10.stable.err
sql/backends/monet5/UDF/capi/Tests/capi10.stable.out
sql/backends/monet5/UDF/capi/Tests/capi11.sql
sql/backends/monet5/UDF/capi/Tests/capi11.stable.err
sql/backends/monet5/UDF/capi/Tests/capi11.stable.out
sql/backends/monet5/UDF/capi/Tests/capi12.sql
sql/backends/monet5/UDF/capi/Tests/capi12.stable.err
sql/backends/monet5/UDF/capi/Tests/capi12.stable.out
sql/backends/monet5/UDF/capi/Tests/capi13.sql
sql/backends/monet5/UDF/capi/Tests/capi13.stable.err
sql/backends/monet5/UDF/capi/Tests/capi13.stable.out
sql/backends/monet5/UDF/capi/capi.c
sql/backends/monet5/UDF/capi/capi.h
sql/backends/monet5/UDF/capi/capi.mal
sql/backends/monet5/UDF/capi/cheader.h
sql/backends/monet5/UDF/udf/80_udf.mal
sql/backends/monet5/UDF/udf/80_udf.sql
sql/backends/monet5/UDF/udf/80_udf_hge.mal
sql/backends/monet5/UDF/udf/80_udf_hge.sql
sql/backends/monet5/UDF/udf/Makefile.ag
sql/backends/monet5/UDF/udf/README
sql/backends/monet5/UDF/udf/Tests/All
sql/backends/monet5/UDF/udf/Tests/udf-fuse.sql
sql/backends/monet5/UDF/udf/Tests/udf-fuse.stable.err
sql/backends/monet5/UDF/udf/Tests/udf-fuse.stable.out
sql/backends/monet5/UDF/udf/Tests/udf-reverse.sql
sql/backends/monet5/UDF/udf/Tests/udf-reverse.stable.err
sql/backends/monet5/UDF/udf/Tests/udf-reverse.stable.out
sql/backends/monet5/UDF/udf/udf.c
sql/backends/monet5/UDF/udf/udf.h
sql/backends/monet5/UDF/udf/udf.mal
sql/backends/monet5/UDF/udf/udf_hge.mal
sql/backends/monet5/UDF/udf/udf_impl.h
Removed Files:
sql/backends/monet5/UDF/cudf/80_udf.mal
sql/backends/monet5/UDF/cudf/80_udf.sql
sql/backends/monet5/UDF/cudf/80_udf_hge.mal
sql/backends/monet5/UDF/cudf/80_udf_hge.sql
sql/backends/monet5/UDF/cudf/Makefile.ag
sql/backends/monet5/UDF/cudf/README
sql/backends/monet5/UDF/cudf/Tests/All
sql/backends/monet5/UDF/cudf/Tests/udf-fuse.sql
sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.err
sql/backends/monet5/UDF/cudf/Tests/udf-fuse.stable.out
sql/backends/monet5/UDF/cudf/Tests/udf-reverse.sql
sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.err
sql/backends/monet5/UDF/cudf/Tests/udf-reverse.stable.out
sql/backends/monet5/UDF/cudf/udf.c
sql/backends/monet5/UDF/cudf/udf.h
sql/backends/monet5/UDF/cudf/udf.mal
sql/backends/monet5/UDF/cudf/udf_hge.mal
sql/backends/monet5/UDF/cudf/udf_impl.h
Modified Files:
.hgignore
buildtools/autogen/autogen.py
clients/Tests/exports.stable.out
gdk/gdk.h
gdk/gdk_bbp.c
gdk/gdk_utils.c
gdk/gdk_utils.h
monetdb5/modules/atoms/mtime.c
monetdb5/modules/atoms/mtime.h
monetdb5/optimizer/opt_mitosis.c
monetdb5/optimizer/opt_prelude.c
monetdb5/optimizer/opt_prelude.h
monetdb5/optimizer/opt_support.c
sql/backends/monet5/UDF/Makefile.ag
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_statement.c
sql/include/sql_catalog.h
sql/server/rel_psm.c
sql/server/sql_parser.y
Branch: default
Log Message:
Merge with jitudf.
diffs (truncated from 5359 to 300 lines):
diff --git a/.hgignore b/.hgignore
--- a/.hgignore
+++ b/.hgignore
@@ -40,6 +40,7 @@ doc.lst
install.lst
monetdb_config.h.in
*.pyc
+sql/backends/monet5/UDF/capi/cheader.text.h
# files generated by various editors
*.swp
diff --git a/buildtools/autogen/autogen.py b/buildtools/autogen/autogen.py
--- a/buildtools/autogen/autogen.py
+++ b/buildtools/autogen/autogen.py
@@ -166,3 +166,18 @@ OutList = map(filter, OutList)
OutListFd = open("acout.in", "w")
OutListFd.writelines(OutList)
OutListFd.close()
+
+# Create cheader.text.h
+CAPIHeaderOriginal = open('sql/backends/monet5/UDF/capi/cheader.h', 'r');
+CAPIHeaderText = open('sql/backends/monet5/UDF/capi/cheader.text.h', 'w+');
+CAPIHeaderText.write("// This file was generated automatically through
bootstrap.py.\n// Do not edit this file directly.\n")
+CAPIHeaderText.write('const char* cheader_header_text = \n');
+for line in CAPIHeaderOriginal:
+ if len(line.strip()) > 0:
+ CAPIHeaderText.write('"' + line.replace("\n", "").replace('"',
'\\"').replace('\\', '\\\\') + '\\n"\n');
+CAPIHeaderText.write(";\n");
+CAPIHeaderOriginal.close();
+CAPIHeaderText.close();
+
+
+
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
@@ -234,6 +234,7 @@ char *GDKfilepath(int farmid, const char
void GDKfree(void *blk);
char *GDKgetenv(const char *name);
int GDKgetenv_int(const char *name, int def);
+int GDKgetenv_istext(const char *name, const char *text);
int GDKgetenv_istrue(const char *name);
int GDKgetenv_isyes(const char *name);
gdk_return GDKgetsem(int sem_id, int count, int *semid, str *msg);
@@ -1454,6 +1455,8 @@ str MTIMEepilogue(void *ret);
str MTIMEepoch2int(int *res, const timestamp *ts);
str MTIMEepoch2lng(lng *res, const timestamp *ts);
str MTIMEepoch_bulk(bat *ret, bat *bid);
+void MTIMEfromdate(date n, int *d, int *m, int *y);
+void MTIMEfromtime(daytime n, int *hour, int *min, int *sec, int *msec);
str MTIMElocal_timezone(lng *res);
str MTIMEmonth_from_str(int *ret, const char *const *month);
str MTIMEmonth_to_str(str *ret, const int *month);
@@ -1523,6 +1526,8 @@ str MTIMEtimestamp_to_str(str *s, const
str MTIMEtimestamp_year(int *ret, const timestamp *t);
str MTIMEtimestamplng(timestamp *ret, const lng *sec);
str MTIMEtimezone(tzone *z, const char *const *name);
+date MTIMEtodate(int day, int month, int year);
+daytime MTIMEtotime(int hour, int min, int sec, int msec);
str MTIMEtzone_create(tzone *ret, const int *minutes);
str MTIMEtzone_create_dst(tzone *ret, const int *minutes, const rule *start,
const rule *end);
str MTIMEtzone_create_lng(tzone *ret, const lng *minutes);
@@ -1963,11 +1968,15 @@ void batBeforeCall(ValPtr v, ValPtr bak)
str batRef;
str batalgebraRef;
str batcalcRef;
+str batcapiRef;
str batmalRef;
str batmmathRef;
str batmtimeRef;
str batpyapi3Ref;
+str batpyapi3Ref;
str batpyapiRef;
+str batpyapiRef;
+str batrapiRef;
str batrapiRef;
str batsqlRef;
str batstrRef;
@@ -1991,6 +2000,7 @@ str bstream_read_wrapwrap(int *res, Bstr
str calcRef;
str callMAL(Client cntxt, MalBlkPtr mb, MalStkPtr *glb, ValPtr argv[], char
debug);
str callString(Client c, str s, int listing);
+str capiRef;
str catalogRef;
void chkDeclarations(MalBlkPtr mb);
void chkFlow(MalBlkPtr mb);
@@ -2058,6 +2068,7 @@ str deleteRef;
void deleteSymbol(Module scope, Symbol prg);
str deltaRef;
str dense_rankRef;
+str dense_rankRef;
malType destinationType(MalBlkPtr mb, InstrPtr p);
str diffRef;
str differenceRef;
@@ -2429,8 +2440,12 @@ str putName(const char *nme);
str putNameLen(const char *nme, size_t len);
str putRef;
str pyapi3Ref;
+str pyapi3Ref;
+str pyapi3mapRef;
str pyapi3mapRef;
str pyapiRef;
+str pyapiRef;
+str pyapimapRef;
str pyapimapRef;
int qtop;
str queryRef;
@@ -2438,6 +2453,8 @@ str querylogRef;
str raiseRef;
str rangejoinRef;
str rankRef;
+str rankRef;
+str rapiRef;
str rapiRef;
int readConsole(Client cntxt);
MalStkPtr reallocGlobalStack(MalStkPtr s, int cnt);
@@ -2539,6 +2556,7 @@ str subcountRef;
str subdeltaRef;
str subdiffRef;
str subeval_aggrRef;
+str subeval_aggrRef;
str subgroupRef;
str subgroupdoneRef;
str subinterRef;
diff --git a/gdk/gdk.h b/gdk/gdk.h
--- a/gdk/gdk.h
+++ b/gdk/gdk.h
@@ -374,18 +374,22 @@
#define GDKisalnum(c) isalnum((unsigned char) (c))
#define GDKisdigit(c) isdigit((unsigned char) (c))
+#define TEMPDIR_NAME "TEMP_DATA"
+
#ifndef NATIVE_WIN32
#define BATDIR "bat"
#define DELDIR "bat/DELETE_ME"
#define BAKDIR "bat/BACKUP"
#define SUBDIR "bat/BACKUP/SUBCOMMIT"
#define LEFTDIR "bat/LEFTOVERS"
+#define TEMPDIR "bat/"TEMPDIR_NAME
#else
#define BATDIR "bat"
#define DELDIR "bat\\DELETE_ME"
#define BAKDIR "bat\\BACKUP"
#define SUBDIR "bat\\BACKUP\\SUBCOMMIT"
#define LEFTDIR "bat\\LEFTOVERS"
+#define TEMPDIR "bat\\"TEMPDIR_NAME
#endif
/*
diff --git a/gdk/gdk_bbp.c b/gdk/gdk_bbp.c
--- a/gdk/gdk_bbp.c
+++ b/gdk/gdk_bbp.c
@@ -1545,6 +1545,9 @@ BBPinit(void)
BBPaddfarm(".", 1 << TRANSIENT);
}
+ if (GDKremovedir(0, TEMPDIR) != GDK_SUCCEED)
+ GDKfatal("BBPinit: cannot remove directory %s\n", TEMPDIR);
+
if (GDKremovedir(0, DELDIR) != GDK_SUCCEED)
GDKfatal("BBPinit: cannot remove directory %s\n", DELDIR);
diff --git a/gdk/gdk_utils.c b/gdk/gdk_utils.c
--- a/gdk/gdk_utils.c
+++ b/gdk/gdk_utils.c
@@ -101,25 +101,26 @@ GDKgetenv(const char *name)
}
int
-GDKgetenv_isyes(const char *name)
+GDKgetenv_istext(const char *name, const char* text)
{
char *val = GDKgetenv(name);
- if (val && strcasecmp(val, "yes") == 0) {
+ if (val && strcasecmp(val, text) == 0) {
return 1;
}
return 0;
}
int
+GDKgetenv_isyes(const char *name)
+{
+ return GDKgetenv_istext(name, "yes");
+}
+
+int
GDKgetenv_istrue(const char *name)
{
- char *val = GDKgetenv(name);
-
- if (val && strcasecmp(val, "true") == 0) {
- return 1;
- }
- return 0;
+ return GDKgetenv_istext(name, "true");
}
int
diff --git a/gdk/gdk_utils.h b/gdk/gdk_utils.h
--- a/gdk/gdk_utils.h
+++ b/gdk/gdk_utils.h
@@ -17,8 +17,8 @@ gdk_export BAT *GDKval;
gdk_export char *GDKgetenv(const char *name);
+gdk_export int GDKgetenv_istext(const char *name, const char* text);
gdk_export int GDKgetenv_isyes(const char *name);
-
gdk_export int GDKgetenv_istrue(const char *name);
gdk_export int GDKgetenv_int(const char *name, int def);
diff --git a/monetdb5/modules/atoms/mtime.c b/monetdb5/modules/atoms/mtime.c
--- a/monetdb5/modules/atoms/mtime.c
+++ b/monetdb5/modules/atoms/mtime.c
@@ -3739,3 +3739,20 @@ MTIMEtimestamp_to_str(str *s, const time
throw(MAL, "mtime.timestamp_to_str", "strftime support missing");
#endif
}
+
+
+date MTIMEtodate(int day, int month, int year) {
+ return todate(day, month, year);
+}
+
+void MTIMEfromdate(date n, int *d, int *m, int *y) {
+ fromdate(n, d, m, y);
+}
+
+daytime MTIMEtotime(int hour, int min, int sec, int msec) {
+ return totime(hour, min, sec, msec);
+}
+
+void MTIMEfromtime(daytime n, int *hour, int *min, int *sec, int *msec) {
+ fromtime(n, hour, min, sec, msec);
+}
diff --git a/monetdb5/modules/atoms/mtime.h b/monetdb5/modules/atoms/mtime.h
--- a/monetdb5/modules/atoms/mtime.h
+++ b/monetdb5/modules/atoms/mtime.h
@@ -261,4 +261,10 @@ mal_export int TYPE_timestamp;
mal_export int TYPE_tzone;
mal_export int TYPE_rule;
+mal_export date MTIMEtodate(int day, int month, int year);
+mal_export void MTIMEfromdate(date n, int *d, int *m, int *y);
+
+mal_export daytime MTIMEtotime(int hour, int min, int sec, int msec);
+mal_export void MTIMEfromtime(daytime n, int *hour, int *min, int *sec, int
*msec);
+
#endif /* _MONETTIME_H_ */
diff --git a/monetdb5/optimizer/opt_mitosis.c b/monetdb5/optimizer/opt_mitosis.c
--- a/monetdb5/optimizer/opt_mitosis.c
+++ b/monetdb5/optimizer/opt_mitosis.c
@@ -87,7 +87,7 @@ OPTmitosisImplementation(Client cntxt, M
getBatType(getArgType(mb, p, p->retc)) == TYPE_dbl))
return 0;
- if (p->argc > 2 && (getModuleId(p) == rapiRef || getModuleId(p)
== pyapiRef || getModuleId(p) == pyapi3Ref) &&
+ if (p->argc > 2 && (getModuleId(p) == capiRef || getModuleId(p)
== rapiRef || getModuleId(p) == pyapiRef || getModuleId(p) == pyapi3Ref) &&
getFunctionId(p) == subeval_aggrRef)
return 0;
diff --git a/monetdb5/optimizer/opt_prelude.c b/monetdb5/optimizer/opt_prelude.c
--- a/monetdb5/optimizer/opt_prelude.c
+++ b/monetdb5/optimizer/opt_prelude.c
@@ -214,6 +214,11 @@ str pyapimapRef;
str pyapiRef;
str querylogRef;
str queryRef;
+str capiRef;
+str batcapiRef;
+str subeval_aggrRef;
+str rankRef;
+str dense_rankRef;
str raiseRef;
str rangejoinRef;
str rankRef;
@@ -507,6 +512,8 @@ void optimizerInit(void)
batrapiRef = putName("batrapi");
pyapiRef = putName("pyapi");
batpyapiRef = putName("batpyapi");
+ capiRef = putName("capi");
+ batcapiRef = putName("batcapi");
pyapimapRef = putName("batpyapimap");
pyapi3Ref = putName("pyapi3");
batpyapi3Ref = putName("batpyapi3");
diff --git a/monetdb5/optimizer/opt_prelude.h b/monetdb5/optimizer/opt_prelude.h
--- a/monetdb5/optimizer/opt_prelude.h
+++ b/monetdb5/optimizer/opt_prelude.h
@@ -214,6 +214,19 @@ mal_export str pyapimapRef;
mal_export str pyapiRef;
mal_export str querylogRef;
mal_export str queryRef;
+mal_export str rapiRef;
+mal_export str batrapiRef;
+mal_export str capiRef;
+mal_export str batcapiRef;
+mal_export str pyapiRef;
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list