Changeset: 27a1b439ac98 for MonetDB
URL: http://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=27a1b439ac98
Added Files:
debian/monetdb-r.install
Modified Files:
debian/control
debian/fix-deb.sh
debian/monetdb5-server.install
java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
sql/backends/monet5/vaults/shp/shp.h
Branch: default
Log Message:
Merge with Jun2016 branch.
diffs (truncated from 1041 to 300 lines):
diff --git a/debian/control b/debian/control
--- a/debian/control
+++ b/debian/control
@@ -11,7 +11,7 @@ Build-Depends: debhelper (>= 5), autotoo
libbam-dev, libbz2-dev, libcurl4-gnutls-dev, libgeos-dev (>= 3.4.0),
libgsl0-dev, libpcre3-dev, libreadline-dev,
libssl-dev, libxml2-dev, perl, pkg-config, python, python3,
- unixodbc-dev, uuid-dev, zlib1g-dev, liblas-c-dev (>= 1.8.0)
+ unixodbc-dev, uuid-dev, zlib1g-dev, liblas-c-dev (>= 1.8.0), r-base
Standards-Version: 3.8.0
X-Python-Version: >= 2.6
X-Python3-Version: >= 3.0
@@ -283,6 +283,22 @@ Description: MonetDB5 128 bit integer (h
This package provides HUGEINT (128-bit integer) support for the SQL
frontend of MonetDB.
+Package: monetdb-r
+Architecture: any
+Depends: ${shlibs:Depends}, ${misc:Depends}, monetdb5-sql (= ${source:Version})
+Description: MonetDB5 128 bit integer (hugeint) support for SQL
+ MonetDB is a database management system that is developed from a
+ main-memory perspective with use of a fully decomposed storage model,
+ automatic index management, extensibility of data types and search
+ accelerators. It also has an SQL frontend.
+ .
+ This package contains the interface to use the R language from within
+ SQL queries.
+ .
+ NOTE: INSTALLING THIS PACKAGE OPENS UP SECURITY ISSUES. If you don't
+ know how this package affects the security of your system, do not
+ install it.
+
Package: monetdb-testing
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
diff --git a/debian/fix-deb.sh b/debian/fix-deb.sh
--- a/debian/fix-deb.sh
+++ b/debian/fix-deb.sh
@@ -1,4 +1,4 @@
-#!/bin/sh
+#!/bin/bash
if [ -f /etc/lsb-release ]; then
source /etc/lsb-release
ID=${DISTRIB_ID,,}
diff --git a/debian/monetdb-r.install b/debian/monetdb-r.install
new file mode 100644
--- /dev/null
+++ b/debian/monetdb-r.install
@@ -0,0 +1,3 @@
+debian/tmp/usr/lib/monetdb5/rapi.mal usr/lib/monetdb5
+debian/tmp/usr/lib/monetdb5/autoload/??_rapi.mal usr/lib/monetdb5/autoload
+debian/tmp/usr/lib/monetdb5/lib_rapi.so usr/lib/monetdb5
diff --git a/debian/monetdb5-server.install b/debian/monetdb5-server.install
--- a/debian/monetdb5-server.install
+++ b/debian/monetdb5-server.install
@@ -1,25 +1,26 @@
debian/tmp/usr/bin/mserver5 usr/bin
debian/tmp/usr/lib/libmonetdb5.so.* usr/lib
-# usr/lib/monetdb5/lib_*.so EXCEPT: lib_{bam,geom,gsl,lidar,sql}.so
+# usr/lib/monetdb5/lib_*.so EXCEPT: lib_{bam,geom,gsl,lidar,rapi,sql}.so
debian/tmp/usr/lib/monetdb5/lib_generator.so usr/lib/monetdb5
debian/tmp/usr/lib/monetdb5/lib_lsst.so usr/lib/monetdb5
debian/tmp/usr/lib/monetdb5/lib_opt_sql_append.so usr/lib/monetdb5
debian/tmp/usr/lib/monetdb5/lib_udf.so usr/lib/monetdb5
debian/tmp/usr/lib/monetdb5/lib_vault.so usr/lib/monetdb5
-# usr/lib/monetdb5/*.mal EXCEPT: {bam,geom,gsl,lidar,sql*,*_hge}.mal
-debian/tmp/usr/lib/monetdb5/[!bglsu]*.mal usr/lib/monetdb5
+# usr/lib/monetdb5/*.mal EXCEPT: {bam,geom,gsl,lidar,rapi,sql*,*_hge}.mal
+debian/tmp/usr/lib/monetdb5/[!bglrsu]*.mal usr/lib/monetdb5
debian/tmp/usr/lib/monetdb5/ba[!m]*.mal usr/lib/monetdb5
debian/tmp/usr/lib/monetdb5/b[!a]*.mal usr/lib/monetdb5
debian/tmp/usr/lib/monetdb5/generator.mal usr/lib/monetdb5
debian/tmp/usr/lib/monetdb5/g[!es]*.mal usr/lib/monetdb5
debian/tmp/usr/lib/monetdb5/l[!i]*.mal usr/lib/monetdb5
+debian/tmp/usr/lib/monetdb5/r[!a]*.mal usr/lib/monetdb5
debian/tmp/usr/lib/monetdb5/s[!q]*.mal usr/lib/monetdb5
debian/tmp/usr/lib/monetdb5/udf.mal usr/lib/monetdb5
debian/tmp/usr/lib/monetdb5/u[!d]*.mal usr/lib/monetdb5
-# usr/lib/monetdb5/autoload/*.mal EXCEPT: *_{bam,geom,gsl,hge,lidar,sql}.mal
+# usr/lib/monetdb5/autoload/*.mal EXCEPT:
*_{bam,geom,gsl,hge,lidar,rapi,sql}.mal
debian/tmp/usr/lib/monetdb5/autoload/??_batcalc.mal usr/lib/monetdb5/autoload
debian/tmp/usr/lib/monetdb5/autoload/??_calc.mal usr/lib/monetdb5/autoload
debian/tmp/usr/lib/monetdb5/autoload/??_generator.mal usr/lib/monetdb5/autoload
diff --git a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
--- a/java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
+++ b/java/src/main/java/nl/cwi/monetdb/jdbc/MonetResultSet.java
@@ -137,7 +137,7 @@ public class MonetResultSet extends Mone
}
/**
- * Constructor used by MonetFillableResultSet.
+ * Constructor used by MonetVirtualResultSet.
* DO NOT USE THIS CONSTRUCTOR IF YOU ARE NOT EXTENDING THIS OBJECT!
*
* @param columns the column names
@@ -300,14 +300,14 @@ public class MonetResultSet extends Mone
*/
@Override
public int findColumn(String columnName) throws SQLException {
- if (columnName != null) {
+ if (columnName != null && columns != null) {
for (int i = 0; i < columns.length; i++) {
- if (columns[i].equals(columnName))
+ if (columnName.equals(columns[i]))
return i + 1;
}
/* if an exact match did not succeed try a case
insensitive match */
for (int i = 0; i < columns.length; i++) {
- if (columns[i].equalsIgnoreCase(columnName))
+ if (columnName.equalsIgnoreCase(columns[i]))
return i + 1;
}
}
@@ -328,30 +328,30 @@ public class MonetResultSet extends Mone
}
@Override
- public Array getArray(int i) throws SQLException {
- throw new SQLFeatureNotSupportedException("Method getArray not
implemented yet, sorry!", "0A000");
+ public Array getArray(int columnIndex) throws SQLException {
+ throw newSQLFeatureNotSupportedException("getArray");
}
@Override
public Array getArray(String colName) throws SQLException {
- throw new SQLFeatureNotSupportedException("Method getArray not
implemented yet, sorry!", "0A000");
+ throw newSQLFeatureNotSupportedException("getArray");
}
/* Mapi doesn't allow something for streams at the moment, thus all not
implemented for now */
@Override
public InputStream getAsciiStream(int columnIndex) throws SQLException {
- throw new SQLFeatureNotSupportedException("Method
getAsciiStream not implemented yet, sorry!", "0A000");
+ throw newSQLFeatureNotSupportedException("getAsciiStream");
}
@Override
public InputStream getAsciiStream(String columnName) throws
SQLException {
- throw new SQLFeatureNotSupportedException("Method
getAsciiStream not implemented yet, sorry!", "0A000");
+ throw newSQLFeatureNotSupportedException("getAsciiStream");
}
@Override
public InputStream getUnicodeStream(int columnIndex) throws
SQLException {
- throw new SQLFeatureNotSupportedException("Method
getUnicodeStream not implemented yet, sorry!", "0A000");
+ throw newSQLFeatureNotSupportedException("getUnicodeStream");
}
@Override
public InputStream getUnicodeStream(String columnName) throws
SQLException {
- throw new SQLFeatureNotSupportedException("Method
getUnicodeStream not implemented yet, sorry!", "0A000");
+ throw newSQLFeatureNotSupportedException("getUnicodeStream");
}
/**
@@ -470,7 +470,7 @@ public class MonetResultSet extends Mone
*/
@Override
public Reader getNCharacterStream(int columnIndex) throws SQLException {
- throw new
SQLFeatureNotSupportedException("getNCharacterStream() not supported", "0A000");
+ throw newSQLFeatureNotSupportedException("getNCharacterStream");
}
/**
@@ -489,7 +489,7 @@ public class MonetResultSet extends Mone
*/
@Override
public Reader getNCharacterStream(String columnName) throws
SQLException {
- return getNCharacterStream(findColumn(columnName));
+ throw newSQLFeatureNotSupportedException("getNCharacterStream");
}
/**
@@ -578,7 +578,7 @@ public class MonetResultSet extends Mone
*/
@Override
public NClob getNClob(int i) throws SQLException {
- throw new SQLFeatureNotSupportedException("getNClob() not
supported", "0A000");
+ throw newSQLFeatureNotSupportedException("getNClob");
}
/**
@@ -596,7 +596,7 @@ public class MonetResultSet extends Mone
*/
@Override
public NClob getNClob(String colName) throws SQLException {
- return getNClob(findColumn(colName));
+ throw newSQLFeatureNotSupportedException("getNClob");
}
/**
@@ -928,7 +928,11 @@ public class MonetResultSet extends Mone
*/
@Override
public int getHoldability() throws SQLException {
- return getStatement().getConnection().getHoldability();
+ // prevent NullPointerException when statement is null (i.c.
MonetVirtualResultSet)
+ if (this.getStatement() != null) {
+ return getStatement().getConnection().getHoldability();
+ }
+ return ResultSet.HOLD_CURSORS_OVER_COMMIT;
}
/**
@@ -939,7 +943,30 @@ public class MonetResultSet extends Mone
*/
@Override
public int getFetchDirection() {
- return FETCH_FORWARD;
+ return ResultSet.FETCH_FORWARD;
+ }
+
+ /**
+ * Gives a hint as to the direction in which the rows in this ResultSet
+ * object will be processed. The initial value is determined by the
+ * Statement object that produced this ResultSet object.
+ * The fetch direction may be changed at any time.
+ * <b>currently not implemented</b>
+ *
+ * @param direction - an int specifying the suggested fetch direction;
+ * one of ResultSet.FETCH_FORWARD, ResultSet.FETCH_REVERSE, or
ResultSet.FETCH_UNKNOWN
+ */
+ @Override
+ public void setFetchDirection(int direction) throws SQLException {
+ switch (direction) {
+ case ResultSet.FETCH_FORWARD:
+ break;
+ case ResultSet.FETCH_REVERSE:
+ case ResultSet.FETCH_UNKNOWN:
+ throw new SQLException("Not supported direction " +
direction, "0A000");
+ default:
+ throw new SQLException("Illegal direction: " +
direction, "M1M05");
+ }
}
/**
@@ -1146,8 +1173,11 @@ public class MonetResultSet extends Mone
String colName =
getColumnName(column);
if (colName != null &&
!"".equals(colName)) {
if (conn == null) {
- // first time,
get a Connection object and cache it for all next columns
- conn =
getStatement().getConnection();
+ // prevent
NullPointerException when statement is null (i.c. MonetVirtualResultSet)
+ if
(getStatement() != null) {
+ //
first time, get a Connection object and cache it for all next columns
+ conn =
getStatement().getConnection();
+ }
}
if (conn != null &&
dbmd == null) {
// first time,
get a MetaData object and cache it for all next columns
@@ -1543,8 +1573,11 @@ public class MonetResultSet extends Mone
public String getColumnClassName(int column) throws
SQLException {
try {
if (conn == null) {
- // first time, get a Connection
object and cache it for all next columns
- conn =
getStatement().getConnection();
+ // prevent NullPointerException
when statement is null (i.c. MonetVirtualResultSet)
+ if (getStatement() != null) {
+ // first time, get a
Connection object and cache it for all next columns
+ conn =
getStatement().getConnection();
+ }
}
if (conn != null) {
Class type = null;
@@ -1652,10 +1685,10 @@ public class MonetResultSet extends Mone
*/
@Override
public Object getObject(int columnIndex) throws SQLException {
- /* statement is null for virtual result sets such as the ones that
hold generated keys */
- if (this.getStatement() == null) {
- return getObject(columnIndex, new HashMap<String, Class<?>>());
- }
+ /* statement is null for MonetVirtualResultSet such as the ones
that hold generated keys */
+ if (this.getStatement() == null) {
+ return getObject(columnIndex, new HashMap<String,
Class<?>>());
+ }
return getObject(columnIndex,
this.getStatement().getConnection().getTypeMap());
}
@@ -1669,11 +1702,26 @@ public class MonetResultSet extends Mone
}
/**
- * Retrieves the value of the designated column in the current row of
this
- * ResultSet object as an Object in the Java programming language. If
the
- * value is an SQL NULL, the driver returns a Java null. This method
uses
- * the given Map object for the custom mapping of the SQL structured or
- * distinct type that is being retrieved.
+ * Gets the value of the designated column in the current row of this
+ * ResultSet object as an Object in the Java programming language.
+ *
+ * This method will return the value of the given column as a Java
object.
+ * The type of the Java object will be the default Java object type
corresponding
+ * to the column's SQL type, following the mapping for built-in types
specified
+ * in the JDBC specification.
+ * If the value is an SQL NULL, the driver returns a Java null.
+ *
+ * This method may also be used to read database-specific abstract data
types.
+ * In the JDBC 2.0 API, the behavior of method getObject is extended to
+ * materialize data of SQL user-defined types.
+ *
_______________________________________________
checkin-list mailing list
[email protected]
https://www.monetdb.org/mailman/listinfo/checkin-list