Changeset: 437e51b4c169 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/437e51b4c169
Modified Files:
        release.txt
        src/main/java/org/monetdb/jdbc/MonetStatement.java
Branch: default
Log Message:

Future versions of MonetDB (post Sep2022) will have capability to parse and 
execute ODBC/JDBC escape sequence syntax.
Reflect this behavior in Statement.setEscapeProcessing(boolean enable).


diffs (87 lines):

diff --git a/release.txt b/release.txt
--- a/release.txt
+++ b/release.txt
@@ -116,15 +116,20 @@ Currently implemented JDBC 4.2 interface
     - executeUpdate with column indices or names
     - setMaxFieldSize
     - setCursorName
-    - setEscapeProcessing on
+    - setEscapeProcessing on for Sep2022 (11.45) or older servers
+    - setEscapeProcessing off for Sep2022 (11.45) or older servers
 
   * java.sql.PreparedStatement
     The next methods are NOT useable/supported:
     - setArray
-    - setAsciiStream, setBinaryStream, setUnicodeStream
+    - setAsciiStream
+    - setBinaryStream
     - setBlob
     - setNClob
-    - setRef, setRowId, setSQLXML
+    - setRef
+    - setRowId
+    - setSQLXML
+    - setUnicodeStream (note: this method is Deprecated)
 
   * java.sql.ParameterMetaData
 
@@ -136,6 +141,15 @@ Currently implemented JDBC 4.2 interface
       because output parameters in stored procedures are not supported by 
MonetDB
     - wasNull() method because output parameters in stored procedures are
       not supported by MonetDB
+    - setArray
+    - setAsciiStream
+    - setBinaryStream
+    - setBlob
+    - setNClob
+    - setRef
+    - setRowId
+    - setSQLXML
+    - setUnicodeStream (note: this method is Deprecated)
 
   * java.sql.ResultSet
     The next methods are NOT useable/supported:
diff --git a/src/main/java/org/monetdb/jdbc/MonetStatement.java 
b/src/main/java/org/monetdb/jdbc/MonetStatement.java
--- a/src/main/java/org/monetdb/jdbc/MonetStatement.java
+++ b/src/main/java/org/monetdb/jdbc/MonetStatement.java
@@ -900,23 +900,30 @@ public class MonetStatement
        /**
         * Sets escape processing on or off. If escape scanning is on (the
         * default), the driver will do escape substitution before sending
-        * the SQL statement to the database. Note: Since prepared
-        * statements have usually been parsed prior to making this call,
-        * disabling escape processing for PreparedStatements objects will
-        * have no effect.
+        * the SQL statement to the database.
+        * Note: Since prepared statements have usually been parsed prior to
+        * making this call, disabling escape processing for
+        * PreparedStatements objects will have no effect.
         *
-        * The MonetDB JDBC driver implements no escape processing at all in
-        * its current implementation because it is too expensive, and in
-        * general should not be necessary given SQL standards compliance.
-        * In this sense, this driver will ignore any call to this function.
+        * The MonetDB JDBC driver does not implement scanning and conditional
+        * removal of escape sequences. Newer MonetDB servers (post 11.45)
+        * have the capability to parse and handle JDBC/ODBC escape sequences
+        * but you can not disable it.
         *
         * @param enable true to enable escape processing; false to disable it
         * @throws SQLException if a database access error occurs
         */
        @Override
        public void setEscapeProcessing(final boolean enable) throws 
SQLException {
-               if (enable)
-                       addWarning("setEscapeProcessing: JDBC escape syntax is 
not supported by this driver", "01M22");
+               // MonetDB releases Sep2022 (11.45) and older do not support 
JDBC escape processing in the server or driver
+               if ((connection.getDatabaseMajorVersion() == 11) && 
(connection.getDatabaseMinorVersion() <= 45)) {
+                       if (enable)
+                               addWarning("setEscapeProcessing(true): JDBC 
escape syntax is not supported by this driver or server", "01M22");
+               } else {
+                       // For newer servers (post 11.45) it is not possible to 
turn it off
+                       if (! enable)
+                               addWarning("setEscapeProcessing(false): Cannot 
disable JDBC escape processing.", "M1M05");
+               }
        }
 
        /**
_______________________________________________
checkin-list mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to