Mercurial > hg > monetdb-java
changeset 792:9dea0795a926 monetdbs
Understand so_timeout, treat_clob_as_varchar and treat_blob_as_binary
author | Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com> |
---|---|
date | Fri, 01 Dec 2023 15:47:20 +0100 (16 months ago) |
parents | 4de810c22328 |
children | 5bfe3357fb1c |
files | src/main/java/org/monetdb/mcl/net/Parameter.java src/main/java/org/monetdb/mcl/net/Target.java tests/UrlTester.java tests/tests.md |
diffstat | 4 files changed, 96 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/org/monetdb/mcl/net/Parameter.java +++ b/src/main/java/org/monetdb/mcl/net/Parameter.java @@ -29,6 +29,9 @@ public enum Parameter { DEBUG("debug", ParameterType.Bool, false, "specific to jdbc", false), LOGFILE("logfile", ParameterType.Str, "", "specific to jdbc", false), + SO_TIMEOUT("so_timeout", ParameterType.Int, 0, "abort if network I/O does not complete in this many milliseconds", false), + CLOB_AS_VARCHAR("treat_clob_as_varchar", ParameterType.Bool, true, "return CLOB/TEXT data as type VARCHAR instead of type CLOB", false), + BLOB_AS_BINARY("treat_blob_as_binary", ParameterType.Bool, true, "return BLOB data as type BINARY instead of type BLOB", false), ; public final String name; @@ -71,6 +74,9 @@ public enum Parameter { case "hash": return HASH; case "debug": return DEBUG; case "logfile": return LOGFILE; + case "so_timeout": return SO_TIMEOUT; + case "treat_clob_as_varchar": return CLOB_AS_VARCHAR; + case "treat_blob_as_binary": return BLOB_AS_BINARY; default: return null; } }
--- a/src/main/java/org/monetdb/mcl/net/Target.java +++ b/src/main/java/org/monetdb/mcl/net/Target.java @@ -28,6 +28,9 @@ public class Target { private String hash = ""; private boolean debug = false; private String logfile = ""; + private int soTimeout = 0; + private boolean treatClobAsVarchar = true; + private boolean treatBlobAsBinary = true; private boolean userWasSet = false; private boolean passwordWasSet = false; @@ -102,8 +105,13 @@ public class Target { case HASH: setHash((String)value); break; case DEBUG: setDebug((boolean)value); break; case LOGFILE: setLogfile((String)value); break; + + case SO_TIMEOUT: setSoTimeout((int)value); break; + case CLOB_AS_VARCHAR: setTreatClobAsVarchar((boolean)value); break; + case BLOB_AS_BINARY: setTreatBlobAsBinary((boolean)value); break; + default: - throw new IllegalStateException("unreachable -- missing case"); + throw new IllegalStateException("unreachable -- missing case: " + parm.name); } } @@ -138,6 +146,9 @@ public class Target { case HASH: return hash; case DEBUG: return debug; case LOGFILE: return logfile; + case SO_TIMEOUT: return soTimeout; + case CLOB_AS_VARCHAR: return treatClobAsVarchar; + case BLOB_AS_BINARY: return treatBlobAsBinary; default: throw new IllegalStateException("unreachable -- missing case"); } @@ -340,6 +351,31 @@ public class Target { this.logfile = logfile; } + public int getSoTimeout() { + return soTimeout; + } + + + public void setSoTimeout(int soTimeout) { + this.soTimeout = soTimeout; + } + + public void setTreatClobAsVarchar(boolean treatClobAsVarchar) { + this.treatClobAsVarchar = treatClobAsVarchar; + } + + public boolean isTreatClobAsVarchar() { + return treatClobAsVarchar; + } + + public boolean isTreatBlobAsBinary() { + return treatBlobAsBinary; + } + + public void setTreatBlobAsBinary(boolean treatBlobAsBinary) { + this.treatBlobAsBinary = treatBlobAsBinary; + } + public Validated validate() throws ValidationError { return new Validated(); } @@ -519,6 +555,18 @@ public class Target { return logfile; } + public int getSoTimeout() { + return soTimeout; + } + + public boolean isTreatClobAsVarchar() { + return treatClobAsVarchar; + } + + public boolean isTreatBlobAsBinary() { + return treatBlobAsBinary; + } + public boolean connectScan() { if (database.isEmpty()) return false; if (!sock.isEmpty() || !host.isEmpty() || port != -1) return false;
--- a/tests/UrlTester.java +++ b/tests/UrlTester.java @@ -21,6 +21,7 @@ public class UrlTester { public static void main(String[] args) throws Exception { checkDefaults(); + checkParameters(); int exitcode; UrlTester tester = new UrlTester(); @@ -30,6 +31,7 @@ public class UrlTester { System.exit(exitcode); } + private static void checkDefaults() { Target target = new Target(); @@ -39,8 +41,17 @@ public class UrlTester { continue; Object actual = target.getObject(parm); if (!expected.equals(actual)) { - System.err.println("Default for " + parm.name + " expected to be <" + expected + "> but is <" + actual + ">"); - System.exit(1); + throw new RuntimeException("Default for " + parm.name + " expected to be <" + expected + "> but is <" + actual + ">"); + } + } + } + + private static void checkParameters() { + for (Parameter parm: Parameter.values()) { + Parameter found = Parameter.forName(parm.name); + if (parm != found) { + String foundStr = found != null ? found.name : "null"; + throw new RuntimeException("Looking up <" + parm.name + ">, found <" + foundStr); } } }
--- a/tests/tests.md +++ b/tests/tests.md @@ -1457,3 +1457,31 @@ EXPECT language=sql ACCEPT mapi:monetdb://localhost:12345/db?_l%61nguage=mal ``` +# lalala Java + +```test +ONLY jdbc +EXPECT so_timeout=0 +SET so_timeout=42 +EXPECT so_timeout=42 +ACCEPT monetdb://?so_timeout=99 +EXPECT so_timeout=99 +``` + +```test +ONLY jdbc +EXPECT treat_clob_as_varchar=true +SET treat_clob_as_varchar=off +EXPECT treat_clob_as_varchar=false +ACCEPT monetdb://?treat_clob_as_varchar=yes +EXPECT treat_clob_as_varchar=on +``` + +```test +ONLY jdbc +EXPECT treat_blob_as_binary=true +SET treat_blob_as_binary=off +EXPECT treat_blob_as_binary=false +ACCEPT monetdb://?treat_blob_as_binary=yes +EXPECT treat_blob_as_binary=on +```