Changeset: f08ad50dad86 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=f08ad50dad86
Modified Files:
sql/backends/monet5/sql.mx
sql/include/sql_catalog.h
sql/server/rel_schema.c
sql/server/sql_mvc.c
sql/server/sql_parser.y
sql/server/sql_scan.c
sql/storage/store.c
Branch: sciql
Log Message:
merged with default branch, manually resolved conflicts with the REMOTE changes
diffs (truncated from 5517 to 300 lines):
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -184,6 +184,7 @@ This package contains the MonetDB ODBC d
if [ "$1" -eq 1 ] || ! grep -q MonetDB /etc/odbcinst.ini; then
odbcinst -i -d -r <<EOF
[MonetDB]
+Description = ODBC for MonetDB
Driver = %{_exec_prefix}/lib/libMonetODBC.so
Setup = %{_exec_prefix}/lib/libMonetODBCs.so
Driver64 = %{_exec_prefix}/lib64/libMonetODBC.so
diff --git a/NT/monetdb_config.h.in b/NT/monetdb_config.h.in
--- a/NT/monetdb_config.h.in
+++ b/NT/monetdb_config.h.in
@@ -596,7 +596,7 @@
/* #undef HAVE_TIMES */
/* Define to 1 if you have the <time.h> header file. */
-/* #undef HAVE_TIME_H */
+#define HAVE_TIME_H 1
/* Define to 1 if you have the timezone and daylight variables. */
#define HAVE_TIMEZONE 1
@@ -748,16 +748,16 @@
#define PACKAGE_BUGREPORT "[email protected]"
/* Define to the full name of this package. */
-#define PACKAGE_NAME ""
+#define PACKAGE_NAME "MonetDB"
/* Define to the full name and version of this package. */
-#define PACKAGE_STRING ""
+#define PACKAGE_STRING "MonetDB 11.5.0"
/* Define to the one symbol short name of this package. */
-#define PACKAGE_TARNAME ""
+#define PACKAGE_TARNAME "MonetDB"
/* Define to the version of this package. */
-#define PACKAGE_VERSION ""
+#define PACKAGE_VERSION "11.5.0"
/* Path separator */
#define PATH_SEP ';'
diff --git a/NT/rules.msc b/NT/rules.msc
--- a/NT/rules.msc
+++ b/NT/rules.msc
@@ -71,7 +71,8 @@ PTHREAD_INCS =
PTHREAD_LIBS =
!ENDIF
-ODBC_LIBS = odbccp32.lib user32.lib
+ODBCINST_LIBS = odbccp32.lib user32.lib
+ODBC_LIBS = odbc32.lib
!IFNDEF PYTHONBASE
PYTHONBASE=C:\Python27
diff --git a/NT/winconfig.py b/NT/winconfig.py
--- a/NT/winconfig.py
+++ b/NT/winconfig.py
@@ -41,8 +41,6 @@ subs = [("@exec_prefix@", r'%prefix%'),
("@pkgincludedir@", r'%prefix%\include\@PACKAGE@'),
("@DIRSEP@", '\\'),
("@CROSS_COMPILING_FALSE@", ''),
- ("@HAVE_CLIENTS_FALSE@", '#'),
- ("@HAVE_MONETDB_FALSE@", '#'),
("@NATIVE_WIN32_FALSE@", '#'),
("@NOT_WIN32_FALSE@", ''),
("@PATHSEP@", ';')]
diff --git a/clients/mapilib/Makefile.ag b/clients/mapilib/Makefile.ag
--- a/clients/mapilib/Makefile.ag
+++ b/clients/mapilib/Makefile.ag
@@ -24,7 +24,7 @@ lib_mapi = {
VERSION = $(MAPI_VERSION)
SOURCES = mapi.c mapi.rc
LIBS = $(SOCKET_LIBS) ../../common/stream/libstream \
- ../../common/options/libmoptions $(openssl_LIBS)
+ ../../common/options/libmoptions $(openssl_LIBS) $(CRYPT_LIBS)
}
headers_mapi = {
diff --git a/clients/odbc/driver/Makefile.ag b/clients/odbc/driver/Makefile.ag
--- a/clients/odbc/driver/Makefile.ag
+++ b/clients/odbc/driver/Makefile.ag
@@ -117,6 +117,6 @@ lib_MonetODBC = {
SQLTransact.c \
driver.rc \
ODBC.syms
- LIBS = ../../mapilib/libmapi $(LTLIBICONV) $(ODBC_LIBS) $(SOCKET_LIBS)
+ LIBS = ../../mapilib/libmapi $(LTLIBICONV) $(ODBCINST_LIBS)
$(SOCKET_LIBS)
}
diff --git a/clients/odbc/driver/ODBCDbc.c b/clients/odbc/driver/ODBCDbc.c
--- a/clients/odbc/driver/ODBCDbc.c
+++ b/clients/odbc/driver/ODBCDbc.c
@@ -80,6 +80,9 @@ newODBCDbc(ODBCEnv *env)
dbc->Connected = 0;
dbc->sql_attr_autocommit = SQL_AUTOCOMMIT_ON; /* default is
autocommit */
dbc->mid = NULL;
+ dbc->major = 0;
+ dbc->minor = 0;
+ dbc->patch = 0;
dbc->cachelimit = 0;
dbc->Mdebug = 0;
diff --git a/clients/odbc/driver/ODBCDbc.h b/clients/odbc/driver/ODBCDbc.h
--- a/clients/odbc/driver/ODBCDbc.h
+++ b/clients/odbc/driver/ODBCDbc.h
@@ -70,6 +70,7 @@ typedef struct tODBCDRIVERDBC {
/* MonetDB connection handle & status information */
Mapi mid; /* connection with server */
int cachelimit; /* cache limit we requested */
+ short major, minor, patch; /* version of server */
int Mdebug;
/* Dbc children: list of ODBC Statement handles created within
diff --git a/clients/odbc/driver/ODBCGlobal.h b/clients/odbc/driver/ODBCGlobal.h
--- a/clients/odbc/driver/ODBCGlobal.h
+++ b/clients/odbc/driver/ODBCGlobal.h
@@ -59,7 +59,6 @@
/* some general defines */
#define MONETDB_ODBC_VER "03.52" /* must be synchronous with ODBCVER */
#define MONETDB_DRIVER_NAME "MonetDBODBClib"
-#define MONETDB_DRIVER_VER "1.00"
#define MONETDB_PRODUCT_NAME "MonetDB ODBC driver"
#define MONETDB_SERVER_NAME "MonetDB"
diff --git a/clients/odbc/driver/SQLConnect.c b/clients/odbc/driver/SQLConnect.c
--- a/clients/odbc/driver/SQLConnect.c
+++ b/clients/odbc/driver/SQLConnect.c
@@ -86,6 +86,21 @@ set_timezone(Mapi mid)
#endif
}
+static void
+get_serverversion(ODBCDbc *dbc)
+{
+ MapiHdl hdl;
+ char *v;
+
+ if ((hdl = mapi_query(dbc->mid, "select value from env() where name =
'monet_version'")) == NULL)
+ return;
+ while (mapi_fetch_row(hdl)) {
+ v = mapi_fetch_field(hdl, 0);
+ sscanf(v, "%hd.%hd.%hd", &dbc->major, &dbc->minor, &dbc->patch);
+ }
+ mapi_close_handle(hdl);
+}
+
SQLRETURN
SQLConnect_(ODBCDbc *dbc,
SQLCHAR *ServerName,
@@ -234,7 +249,10 @@ SQLConnect_(ODBCDbc *dbc,
dbc->dbname = schema ? strdup(schema) : NULL;
mapi_setAutocommit(mid, dbc->sql_attr_autocommit ==
SQL_AUTOCOMMIT_ON);
set_timezone(mid);
- mapi_set_size_header(mid, 1);
+ get_serverversion(dbc);
+ if (dbc->major > 11 ||
+ (dbc->major == 11 && dbc->minor >= 5))
+ mapi_set_size_header(mid, 1);
}
return rc;
diff --git a/clients/odbc/driver/SQLDescribeCol.c
b/clients/odbc/driver/SQLDescribeCol.c
--- a/clients/odbc/driver/SQLDescribeCol.c
+++ b/clients/odbc/driver/SQLDescribeCol.c
@@ -114,6 +114,9 @@ SQLDescribeCol_(ODBCStmt *stmt,
case SQL_INTERVAL_MINUTE_TO_SECOND:
*DecimalDigitsPtr = rec->sql_desc_precision;
break;
+ default:
+ *DecimalDigitsPtr = 0;
+ break;
}
}
diff --git a/clients/odbc/driver/SQLGetInfo.c b/clients/odbc/driver/SQLGetInfo.c
--- a/clients/odbc/driver/SQLGetInfo.c
+++ b/clients/odbc/driver/SQLGetInfo.c
@@ -49,6 +49,7 @@ SQLGetInfo_(ODBCDbc *dbc,
SQLSMALLINT *StringLengthPtr)
{
int nValue = 0;
+ char buf[64];
const char *sValue = NULL; /* iff non-NULL, return string value */
int len = 0;
@@ -386,9 +387,14 @@ SQLGetInfo_(ODBCDbc *dbc,
case SQL_DRIVER_NAME:
sValue = MONETDB_DRIVER_NAME;
break;
- case SQL_DRIVER_VER:
- sValue = MONETDB_DRIVER_VER;
+ case SQL_DRIVER_VER: {
+ int maj = 0, min = 0, pat = 0;
+ sscanf(PACKAGE_VERSION, "%d.%d.%d", &maj, &min, &pat);
+ snprintf(buf, sizeof(buf), "%02d.%02d.%04d %s", maj, min, pat,
+ MONETDB_RELEASE);
+ sValue = buf;
break;
+ }
case SQL_FETCH_DIRECTION:
nValue = SQL_FD_FETCH_NEXT;
len = sizeof(SQLUSMALLINT);
@@ -419,10 +425,12 @@ SQLGetInfo_(ODBCDbc *dbc,
len = sizeof(SQLUSMALLINT);
break;
case SQL_DBMS_NAME:
- sValue = MONETDB_PRODUCT_NAME;
+ sValue = PACKAGE_NAME;
break;
case SQL_DBMS_VER:
- sValue = MONETDB_DRIVER_VER;
+ snprintf(buf, sizeof(buf), "%02d.%02d.%04d",
+ dbc->major, dbc->minor, dbc->patch);
+ sValue = buf;
break;
case SQL_PROCEDURES:
sValue = "N";
diff --git a/clients/odbc/samples/Makefile.ag b/clients/odbc/samples/Makefile.ag
--- a/clients/odbc/samples/Makefile.ag
+++ b/clients/odbc/samples/Makefile.ag
@@ -17,19 +17,11 @@
MTSAFE
-# FIXME: libMonetODBC is actually a module, one cannot link against
-# that on Darwin. We need to properly link against (unix)ODBC and use
-# it's drivermanager which correctly dlopens the MonetODBC module. This
-# requires an odbc.ini file, and testing to be aware of it as well.
-#BINS = {
-# CONDINST = HAVE_TESTING
-# DIR = libdir/monetdb/tests
-# SOURCES = odbcsample1.c testgetinfo.c
-# LIBS = ../driver/libMonetODBC ../../mapilib/libmapi $(curl_LIBS)
-#}
+INCLUDES = $(ODBC_INCS)
-bin_odbctest = {
- COND = NATIVE_WIN32
- SOURCES = odbcsample1.c
- LIBS = -lodbc32
+BINS = {
+ CONDINST = HAVE_TESTING
+ DIR = libdir/monetdb/tests
+ SOURCES = odbcsample1.c testgetinfo.c
+ LIBS = $(ODBC_LIBS)
}
diff --git a/clients/odbc/samples/odbcsample1.c
b/clients/odbc/samples/odbcsample1.c
--- a/clients/odbc/samples/odbcsample1.c
+++ b/clients/odbc/samples/odbcsample1.c
@@ -17,7 +17,9 @@
* All Rights Reserved.
*/
-#include "monetdb_config.h" /* we need SIZEOF_INT and SIZEOF_LONG for sql.h
*/
+#ifdef _MSC_VER
+#include <WTypes.h>
+#endif
#include <stdio.h>
#include <stdlib.h>
#include <sql.h>
diff --git a/clients/odbc/samples/testgetinfo.c
b/clients/odbc/samples/testgetinfo.c
--- a/clients/odbc/samples/testgetinfo.c
+++ b/clients/odbc/samples/testgetinfo.c
@@ -17,7 +17,9 @@
* All Rights Reserved.
*/
-#include "monetdb_config.h" /* we need SIZEOF_INT and SIZEOF_LONG for sql.h
*/
+#ifdef _MSC_VER
+#include <WTypes.h>
+#endif
#include <stdio.h>
#include <stdlib.h>
#include <sql.h>
@@ -91,7 +93,6 @@ main(int argc, char **argv)
SQLSMALLINT resultlen;
SQLUSMALLINT si;
SQLUINTEGER i;
- SQLULEN li;
if (argc > 1)
dsn = argv[1];
@@ -346,10 +347,6 @@ main(int argc, char **argv)
check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
printf("SQL_DM_VER: %.*s\n", resultlen, str);
- ret = SQLGetInfo(dbc, SQL_DRIVER_HDESC, &li, sizeof(li), &resultlen);
- check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
- printf("SQL_DRIVER_HDESC: %lu\n", (unsigned long) li);
-
ret = SQLGetInfo(dbc, SQL_DRIVER_NAME, str, sizeof(str), &resultlen);
check(ret, SQL_HANDLE_DBC, dbc, "SQLGetInfo");
printf("SQL_DRIVER_NAME: %.*s\n", resultlen, str);
diff --git a/configure.ag b/configure.ag
--- a/configure.ag
+++ b/configure.ag
@@ -2102,6 +2102,7 @@ AM_CONDITIONAL(HAVE_SPHINXCLIENT, test x
_______________________________________________
Checkin-list mailing list
[email protected]
http://mail.monetdb.org/mailman/listinfo/checkin-list