MonetDB: Dec2023 - Make msettings accessible from outside

2023-12-13 Thread Joeri van Ruth via checkin-list
Changeset: b378f4ac6fdd for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/b378f4ac6fdd
Modified Files:
clients/Tests/exports.stable.out
clients/mapilib/CMakeLists.txt
clients/mapilib/mapi.c
clients/mapilib/mapi_intern.h
clients/mapilib/msettings.h
Branch: Dec2023
Log Message:

Make msettings accessible from outside


diffs (195 lines):

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
@@ -653,6 +653,7 @@ int64_t mapi_get_querytime(MapiHdl hdl) 
 int mapi_get_querytype(MapiHdl hdl) __attribute__((__nonnull__(1)));
 int64_t mapi_get_row_count(MapiHdl hdl) __attribute__((__nonnull__(1)));
 int mapi_get_scale(MapiHdl hdl, int fnr) __attribute__((__nonnull__(1)));
+msettings *mapi_get_settings(Mapi mid) __attribute__((__nonnull__(1)));
 int64_t mapi_get_sqloptimizertime(MapiHdl hdl) __attribute__((__nonnull__(1)));
 char *mapi_get_table(MapiHdl hdl, int fnr) __attribute__((__nonnull__(1)));
 int mapi_get_tableid(MapiHdl hdl) __attribute__((__nonnull__(1)));
@@ -700,6 +701,7 @@ MapiMsg mapi_set_time_zone(Mapi mid, int
 MapiMsg mapi_set_timeout(Mapi mid, unsigned int timeout, bool (*callback)(void 
*), void *callback_data) __attribute__((__nonnull__(1)));
 void mapi_setfilecallback(Mapi mid, char *(*getfunc)(void *priv, const char 
*filename, bool binary, uint64_t offset, size_t *size), char *(*putfunc)(void 
*priv, const char *filename, const void *data, size_t size), void *priv) 
__attribute__((__nonnull__(1)));
 void mapi_setfilecallback2(Mapi mid, char *(*getfunc)(void *priv, const char 
*filename, bool binary, uint64_t offset, size_t *size), char *(*putfunc)(void 
*priv, const char *filename, bool binary, const void *data, size_t size), void 
*priv) __attribute__((__nonnull__(1)));
+Mapi mapi_settings(msettings *settings) __attribute__((__nonnull__(1)));
 int mapi_split_line(MapiHdl hdl) __attribute__((__nonnull__(1)));
 MapiMsg mapi_store_field(MapiHdl hdl, int fnr, int outtype, void *outparam) 
__attribute__((__nonnull__(1)));
 MapiMsg mapi_timeout(Mapi mid, unsigned int time) 
__attribute__((__nonnull__(1)));
diff --git a/clients/mapilib/CMakeLists.txt b/clients/mapilib/CMakeLists.txt
--- a/clients/mapilib/CMakeLists.txt
+++ b/clients/mapilib/CMakeLists.txt
@@ -32,7 +32,8 @@ target_sources(mapi
   
$/mapi_querytype.h>
   $/msettings.h>
   
$/mapi.h>
-  
$/mapi_querytype.h>)
+  
$/mapi_querytype.h>
+  
$/msettings.h>)
 
 target_include_directories(mapi
   PUBLIC
@@ -58,7 +59,7 @@ set_target_properties(mapi
   PROPERTIES
   VERSION ${MAPI_VERSION}
   SOVERSION ${MAPI_VERSION_MAJOR}
-  PUBLIC_HEADER "mapi.h;mapi_querytype.h")
+  PUBLIC_HEADER "mapi.h;mapi_querytype.h;msettings.h")
 
 if (NOT WIN32)
   configure_file(monetdb-mapi.pc.in
diff --git a/clients/mapilib/mapi.c b/clients/mapilib/mapi.c
--- a/clients/mapilib/mapi.c
+++ b/clients/mapilib/mapi.c
@@ -1772,17 +1772,18 @@ const struct MapiStruct MapiStructDefaul
 
 /* Allocate a new connection handle. */
 Mapi
-mapi_new(void)
+mapi_new(msettings *settings)
 {
Mapi mid;
-   msettings *settings;
static ATOMIC_TYPE index = ATOMIC_VAR_INIT(0);
 
mid = malloc(sizeof(*mid));
-   settings = msettings_create();
-   if (mid == NULL || settings == NULL) {
+   if (mid == NULL)
+   return NULL;
+   if (settings == NULL)
+   settings = msettings_create();
+   if (settings == NULL) {
free(mid);
-   msettings_destroy(settings);
return NULL;
}
 
@@ -1889,7 +1890,7 @@ mapi_mapiuri(const char *url, const char
return NULL;
}
 
-   mid = mapi_new();
+   mid = mapi_new(NULL);
if (mid == NULL)
return NULL;
 
@@ -1948,7 +1949,7 @@ mapi_mapi(const char *host, int port, co
return NULL;
}
 
-   mid = mapi_new();
+   mid = mapi_new(NULL);
if (mid == NULL)
return NULL;
msettings *settings = mid->settings;
@@ -1987,6 +1988,19 @@ mapi_mapi(const char *host, int port, co
return mid;
 }
 
+Mapi
+mapi_settings(msettings *settings)
+{
+   assert(settings);
+   Mapi mid = mapi_new(settings);
+   if (mid == NULL)
+   return mid;
+
+   set_uri(mid);
+   return mid;
+}
+
+
 /* Close a connection and free all memory associated with the
connection handle. */
 MapiMsg
@@ -4665,6 +4679,12 @@ mapi_get_active(Mapi mid)
return mid->active;
 }
 
+msettings*
+mapi_get_settings(Mapi mid)
+{
+   return mid->settings;
+}
+
 
 MapiMsg
 mapi_wrap_streams(Mapi mid, stream *rstream, stream *wstream)
diff --git a/clients/mapilib/mapi_intern.h b/clients/mapilib/mapi_intern.h
--- a/clients/mapilib/mapi_intern.h
+++ b/clients/mapilib/mapi_intern.h
@@ -315,7 +315,8 @@ MapiMsg mapi_Xcommand(Mapi mid, const ch
 
 extern const struct MapiStruct MapiStru

MonetDB: Dec2023 - Package msettings.h in binary distributions.

2023-12-13 Thread Sjoerd Mullender via checkin-list
Changeset: ec4e81302361 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/ec4e81302361
Modified Files:
MonetDB.spec
NT/mksqlwxs.py
debian/libmonetdb-client-dev.install
Branch: Dec2023
Log Message:

Package msettings.h in binary distributions.


diffs (31 lines):

diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -329,6 +329,7 @@ This package contains the files needed t
 %dir %{_includedir}/monetdb
 %{_libdir}/libmapi.so
 %{_includedir}/monetdb/mapi*.h
+%{_includedir}/monetdb/msettings.h
 %{_libdir}/pkgconfig/monetdb-mapi.pc
 
 %package client-odbc
diff --git a/NT/mksqlwxs.py b/NT/mksqlwxs.py
--- a/NT/mksqlwxs.py
+++ b/NT/mksqlwxs.py
@@ -188,6 +188,8 @@ def main():
   sorted([r'include\monetdb\{}'.format(x) for x in filter(lambda 
x: (x.startswith('gdk') or x.startswith('monet') or x.startswith('mal') or 
x.startswith('sql') or x.startswith('rel') or x.startswith('store') or 
x.startswith('exception') or x.startswith('opt_backend')) and x.endswith('.h'), 
os.listdir(os.path.join(sys.argv[3], 'include', 'monetdb')))] +
  [r'include\monetdb\copybinary.h',
   r'include\monetdb\mapi.h',
+  r'include\monetdb\mapi_querytype.h',
+  r'include\monetdb\msettings.h',
   r'include\monetdb\matomic.h',
   r'include\monetdb\mel.h',
   r'include\monetdb\mstring.h',
diff --git a/debian/libmonetdb-client-dev.install 
b/debian/libmonetdb-client-dev.install
--- a/debian/libmonetdb-client-dev.install
+++ b/debian/libmonetdb-client-dev.install
@@ -1,3 +1,4 @@
 debian/tmp/usr/lib/x86_64-linux-gnu/libmapi.so usr/lib/x86_64-linux-gnu
 debian/tmp/usr/include/monetdb/mapi*.h usr/include/monetdb
+debian/tmp/usr/include/monetdb/msettings.h usr/include/monetdb
 debian/tmp/usr/lib/x86_64-linux-gnu/pkgconfig/monetdb-mapi.pc 
usr/lib/x86_64-linux-gnu/pkgconfig
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Dec2023 - Test host name verification when cert= is given

2023-12-13 Thread Joeri van Ruth via checkin-list
Changeset: 203120deebc7 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/203120deebc7
Modified Files:
clients/mapilib/Tests/tlssecurity.py
Branch: Dec2023
Log Message:

Test host name verification when cert= is given


diffs (31 lines):

diff --git a/clients/mapilib/Tests/tlssecurity.py 
b/clients/mapilib/Tests/tlssecurity.py
--- a/clients/mapilib/Tests/tlssecurity.py
+++ b/clients/mapilib/Tests/tlssecurity.py
@@ -62,10 +62,10 @@ server = tlstester.TLSTester(
 server_thread = threading.Thread(target=server.serve_forever, daemon=True)
 server_thread.start()
 
-def attempt(experiment: str, portname: str, expected_error_regex: str, 
tls=True, **params):
+def attempt(experiment: str, portname: str, expected_error_regex: str, 
tls=True, host='localhost', **params):
 port = server.get_port(portname)
 scheme = 'monetdbs' if tls else 'monetdb'
-url = f"{scheme}://localhost:{port}/demo"
+url = f"{scheme}://{host}:{port}/demo"
 if params:
 # should be percent-escaped
 url += '?' + '&'.join(f"{k}={v}" for k, v in params.items())
@@ -129,6 +129,14 @@ attempt('refuse_no_cert', 'server1', "")
 
 attempt('refuse_wrong_cert', 'server1', 'verify failed', 
cert=certpath('ca2.crt'))
 
+# refuse_wrong_host
+#
+# Connect to port 'server1' over TLS, but using an alternative host name.
+# For example, `localhost.localdomain` instead of `localhost`.
+# The client should refuse to let the connection proceed.
+
+attempt('refuse_wrong_host', 'server1', 'verify failed', 
host='localhost.localdomain', cert=certpath('ca1.crt'))
+
 # refuse_tlsv12
 #
 # Connect to port 'tls12' over TLS, verifying the connection using ca1.crt. The
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Dec2023 - Properly test system certificates

2023-12-13 Thread Joeri van Ruth via checkin-list
Changeset: 27b6861a2493 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/27b6861a2493
Modified Files:
clients/mapilib/Tests/systemcertificates.py
Branch: Dec2023
Log Message:

Properly test system certificates

Depends on environment variables TLSTEST_URL and TLSTEST_ALTURL


diffs (166 lines):

diff --git a/clients/mapilib/Tests/systemcertificates.py 
b/clients/mapilib/Tests/systemcertificates.py
--- a/clients/mapilib/Tests/systemcertificates.py
+++ b/clients/mapilib/Tests/systemcertificates.py
@@ -7,39 +7,134 @@
 # Copyright 1997 - July 2008 CWI, August 2008 - 2023 MonetDB B.V.
 
 
-import subprocess
-import sys
-
 # Test that certificates from the system trust store are used when no explicit
 # certificate is given.
 #
-# # If all goes well, this will give a protocol error (MAPI != HTTP),
-# not a TLS error
+# This test tries to connect to an existing TLS+MAPI server that has a publicly
+# trusted certificate. This needs to be configured externally through
+# the environment variables TLSTEST_URL and TLSTEST_ALTURL.
+#
+# These must point to the same server so they receive the same certificate.
+# However, the host name in TLSTEST_URL must match the certificate while the
+# hostname in TLSTEST_ALT doesn't match.
+
+
+import logging
+import os
+import shlex
+import socket
+import subprocess
+import ssl
+import sys
+import urllib
+from urllib.parse import urlparse
+
+level = logging.WARNING
+# if sys.platform == 'win32':
+# level=logging.DEBUG
+if '-v' in sys.argv:
+level = logging.DEBUG
+# level = logging.DEBUG
+logging.basicConfig(level=level)
+
+logger = logging.root
 
-# Ideally we'd use www.monetdb.org but, but at the time of writing 
www.monetdb.org
-# only returns an error after a 20 second time out.
-#
-# python.org on the other hand uses a CDN which kicks us out instantly.
-HOST = 'python.org'
+#
+# Look for the URL configuration variables, exit if not present
+
+def getvar(name):
+value = os.environ.get(name)
+if value:
+logger.debug(f"Environment variable {name}={value}")
+return value
+else:
+logger.debug(f"Environment variable {name} is not set, exiting early")
+exit(0)
+
+url = getvar('TLSTEST_URL')
+alturl = getvar('TLSTEST_ALTURL')
+
+
+#
+# Before trying with mclient, connect directly to see if the server is
+# up and behaves the way we need for this test
+
+def try_connect(url, check_hostname, expected_error):
+logger.info(f"Attempting to connect to {url}, 
check_hostname={check_hostname}")
+parsed = urlparse(url)
+assert parsed.scheme == 'monetdbs', f'Expected scheme monetdbs, not 
{parsed.scheme}'
+
+host = parsed.hostname
+port = parsed.port or 5
+logger.debug(f"Connecting to host {host!r} port {port!r}")
+
+with socket.create_connection((host, port)) as sock:
+logger.debug(f"Connection established")
 
-# Run mclient
-cmd = ['mclient', '-L-', '-d', f"monetdbs://{HOST}:443/demo"]
-proc = subprocess.run(cmd, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
-if proc.returncode != 2:
-msg = str(proc.stderr, 'utf-8')
-print(f"mclient is supposed to exit with status 2, not 
{proc.returncode}.\n--- stderr ---\n{msg}\n---end stderr ---", file=sys.stderr)
-exit(1)
+logger.debug(f"Verifying TLS")
+ctx = ssl.create_default_context()
+ctx.check_hostname = check_hostname
+try:
+ssl_connection = ctx.wrap_socket(sock, server_hostname=host)
+# if we get here it succeeded
+if expected_error:
+raise Exception(f"Verification succeeded unexpectedly")
+else:
+logger.debug(f"Verification succeeded as expected")
+logger.debug("Closing")
+ssl_connection.close()
+except ssl.SSLError as e:
+if expected_error and expected_error in str(e):
+logger.debug(f"Verification failed as expected: {e}")
+elif expected_error:
+logger.error(f"Verification failed but the error did not match 
{expected_error!r}: {e}")
+else:
+logger.error(f"Verification failed unexpectedly: {e}")
+raise e
+
+
+# both urls should be reachable and present a TLS certificate
+try_connect(url, check_hostname=False, expected_error=None)
+try_connect(alturl, check_hostname=False, expected_error=None)
+
+# url should have the expected hostname so this should succeed
+try_connect(url, check_hostname=True, expected_error=None)
+
+# alturl should have a hostname that makes the verification fail
+try_connect(alturl, check_hostname=True, expected_error='Hostname mismatch')
+
 
-# After the TLS handshake succeeds we expect the server to send something like
-# 'HTTP/1.1 400 Bad Request' because we're sending \x00\x00 instead of an HTTP
-# request. libmapi will interpre

MonetDB: Dec2023 - Import latest changes to url tests

2023-12-13 Thread Joeri van Ruth via checkin-list
Changeset: 502b3451ec49 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/502b3451ec49
Modified Files:
clients/mapilib/Tests/tests.md
Branch: Dec2023
Log Message:

Import latest changes to url tests


diffs (truncated from 330 to 300 lines):

diff --git a/clients/mapilib/Tests/tests.md b/clients/mapilib/Tests/tests.md
--- a/clients/mapilib/Tests/tests.md
+++ b/clients/mapilib/Tests/tests.md
@@ -45,8 +45,8 @@ TODO before 1.0 does the above explanati
 
 ```test
 ACCEPT monetdb:///demo
+EXPECT database=demo
 EXPECT connect_scan=true
-EXPECT database=demo
 ```
 
 ```test
@@ -115,6 +115,7 @@ EXPECT database=demo
 
 ```test
 ACCEPT monetdb://[2001:0db8:85a3:::8a2e:0370:7334]:12345/demo
+EXPECT host=2001:0db8:85a3:::8a2e:0370:7334
 EXPECT connect_scan=false
 EXPECT connect_unix=
 EXPECT connect_tcp=2001:0db8:85a3:::8a2e:0370:7334
@@ -176,14 +177,14 @@ EXPECT database=demo
 ```
 
 ```test
-ACCEPT monetdbs://mdb.example.com/demo?certhash={sha256}fb:67:20:aa:00:9f:33:4c
+ACCEPT monetdbs://mdb.example.com/demo?certhash=sha256:fb:67:20:aa:00:9f:33:4c
 EXPECT connect_scan=false
 EXPECT connect_unix=
 EXPECT connect_tcp=mdb.example.com
 EXPECT connect_port=5
 EXPECT tls=on
 EXPECT connect_tls_verify=hash
-EXPECT certhash={sha256}fb:67:20:aa:00:9f:33:4c
+EXPECT certhash=sha256:fb:67:20:aa:00:9f:33:4c
 EXPECT connect_certhash_digits=fb6720aa009f334c
 EXPECT database=demo
 ```
@@ -199,6 +200,17 @@ EXPECT user=dbuser
 EXPECT password=
 ```
 
+```test
+ACCEPT monetdb://localhost/demo?sock=/var/monetdb/_sock&user=dbuser
+EXPECT connect_scan=false
+EXPECT connect_unix=/var/monetdb/_sock
+EXPECT connect_tcp=
+EXPECT tls=off
+EXPECT database=demo
+EXPECT user=dbuser
+EXPECT password=
+```
+
 
 ## Parameter tests
 
@@ -269,6 +281,9 @@ Not supported on Windows, but they shoul
 EXPECT sock=
 ACCEPT monetdb:///?sock=/tmp/sock
 EXPECT sock=/tmp/sock
+ACCEPT monetdb:///?sock=C:/TEMP/sock
+EXPECT sock=C:/TEMP/sock
+NOT jdbc
 ACCEPT monetdb:///?sock=C:\TEMP\sock
 EXPECT sock=C:\TEMP\sock
 ```
@@ -288,6 +303,9 @@ EXPECT connect_unix=/tmp/nonstandard/.s.
 EXPECT cert=
 ACCEPT monetdbs:///?cert=/tmp/cert.pem
 EXPECT cert=/tmp/cert.pem
+ACCEPT monetdbs:///?cert=C:/TEMP/cert.pem
+EXPECT cert=C:/TEMP/cert.pem
+NOT jdbc
 ACCEPT monetdbs:///?cert=C:\TEMP\cert.pem
 EXPECT cert=C:\TEMP\cert.pem
 ```
@@ -296,35 +314,31 @@ EXPECT cert=C:\TEMP\cert.pem
 
 ```test
 EXPECT certhash=
-ACCEPT monetdbs:///?certhash={sha256}001122ff
-ACCEPT monetdbs:///?certhash={sha256}00:11:22:ff
-ACCEPT monetdbs:///?certhash={sha256}aa::ff:
-ACCEPT 
monetdbs:///?certhash={sha256}e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
+ACCEPT monetdbs:///?certhash=sha256:001122ff
+ACCEPT monetdbs:///?certhash=sha256:00:11:22:ff
+ACCEPT monetdbs:///?certhash=sha256:aa::ff:
+ACCEPT 
monetdbs:///?certhash=sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
 ```
 
 This string of hexdigits is longer than the length of a SHA-256 digest.
 It still parses, it will just never match.
 
 ```test
-ACCEPT 
monetdbs:///?certhash={sha256}e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8550
-ACCEPT 
monetdbs:///?certhash={sha256}e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85501
+ACCEPT 
monetdbs:///?certhash=sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b8550
+ACCEPT 
monetdbs:///?certhash=sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b85501
 ```
 
 ```test
 REJECT monetdbs:///?certhash=001122ff
-REJECT monetdbs:///?certhash={Sha256}001122ff
-REJECT monetdbs:///?certhash=sha256:001122ff
-REJECT monetdbs:///?certhash={sha256}001122gg
-REJECT monetdbs:///?certhash={sha256}}001122
-REJECT monetdbs:///?certhash={{sha256}001122
-REJECT monetdbs:///?certhash={{sha256}
-REJECT monetdbs:///?certhash={sha
-REJECT monetdbs:///?certhash={sha1}aabbcc
-REJECT monetdbs:///?certhash={sha1}
-REJECT monetdbs:///?certhash={sha1}X
-REJECT monetdbs:///?certhash={sha99}aabbcc
-REJECT monetdbs:///?certhash={sha99}
-REJECT monetdbs:///?certhash={sha99}X
+REJECT monetdbs:///?certhash=Sha256:001122ff
+REJECT monetdbs:///?certhash=sha256:001122gg
+REJECT monetdbs:///?certhash=sha
+REJECT monetdbs:///?certhash=sha1:aabbcc
+REJECT monetdbs:///?certhash=sha1:
+REJECT monetdbs:///?certhash=sha1:X
+REJECT monetdbs:///?certhash=sha99:aabbcc
+REJECT monetdbs:///?certhash=sha99:
+REJECT monetdbs:///?certhash=sha99:X
 ```
 
 ### clientkey, clientcert
@@ -334,6 +348,9 @@ EXPECT clientkey=
 EXPECT clientcert=
 ACCEPT monetdbs:///?clientkey=/tmp/clientkey.pem
 EXPECT clientkey=/tmp/clientkey.pem
+ACCEPT monetdbs:///?clientkey=C:/TEMP/clientkey.pem
+EXPECT clientkey=C:/TEMP/clientkey.pem
+NOT jdbc
 ACCEPT monetdbs:///?clientkey=C:\TEMP\clientkey.pem
 EXPECT clientkey=C:\TEMP\clientkey.pem
 ```
@@ -368,6 +385,9 @@ SET clientkey=dummy
 EXPECT clientcert=
 ACCEPT monetdbs:///?clientcert=/tmp

MonetDB: Dec2023 - The certhash parameter changed from {sha256}d...

2023-12-13 Thread Joeri van Ruth via checkin-list
Changeset: f829ae760bb6 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f829ae760bb6
Modified Files:
clients/mapilib/Tests/tlssecurity.py
clients/mapilib/Tests/tlstester.py
clients/mapilib/msettings.c
Branch: Dec2023
Log Message:

The certhash parameter changed from {sha256}digits to sha256:digits


diffs (68 lines):

diff --git a/clients/mapilib/Tests/tlssecurity.py 
b/clients/mapilib/Tests/tlssecurity.py
--- a/clients/mapilib/Tests/tlssecurity.py
+++ b/clients/mapilib/Tests/tlssecurity.py
@@ -196,7 +196,7 @@ attempt('connect_server_name', 'sni', No
 # of the server certificate in DER form. Have a succesful MAPI exchange.
 
 server1hash = sha256(certs.get_file('server1.der')).hexdigest()
-attempt('connect_right_hash', 'server1', None, certhash='{sha256}' + 
server1hash[:6])
+attempt('connect_right_hash', 'server1', None, certhash='sha256:' + 
server1hash[:6])
 
 # connect_wrong_hash
 #
@@ -208,7 +208,7 @@ first_digit = server1hash[0]
 other_digit = f"{8 ^ int(first_digit, 16):x}"
 wronghash = other_digit + server1hash[1:]
 
-attempt('connect_wrong_hash', 'server1', "does not match certhash", 
certhash='{sha256}' + wronghash[:6])
+attempt('connect_wrong_hash', 'server1', "does not match certhash", 
certhash='sha256:' + wronghash[:6])
 
 
 # connect_ca_hash
@@ -217,7 +217,7 @@ attempt('connect_wrong_hash', 'server1',
 # of the CA1 certificate in DER form. This should fail.
 
 ca1hash = sha256(certs.get_file('ca1.der')).hexdigest()
-attempt('connect_ca_hash', 'server1', "does not match certhash", 
certhash='{sha256}' + ca1hash[:6])
+attempt('connect_ca_hash', 'server1', "does not match certhash", 
certhash='sha256:' + ca1hash[:6])
 
 
 
diff --git a/clients/mapilib/Tests/tlstester.py 
b/clients/mapilib/Tests/tlstester.py
--- a/clients/mapilib/Tests/tlstester.py
+++ b/clients/mapilib/Tests/tlstester.py
@@ -555,7 +555,7 @@ class MapiHandler(socketserver.BaseReque
 cert = 
self.tlstester.certs.get_file(f"{self.redirect}.der")
 algo = 'sha256'
 digest = hashlib.new(algo, cert).hexdigest()
-fingerprint = "{" + algo + "}" + digest
+fingerprint = algo + ":" + digest
 msg = f"^monetdbs://{host}:{port}?certhash={fingerprint}\n"
 self.send_message(bytes(msg, 'ascii'))
 log.debug(
diff --git a/clients/mapilib/msettings.c b/clients/mapilib/msettings.c
--- a/clients/mapilib/msettings.c
+++ b/clients/mapilib/msettings.c
@@ -557,10 +557,10 @@ validate_certhash(msettings *mp)
if (*certhash == '\0')
return NULL;
 
-   if (strncmp(certhash, "{sha256}", 8) == 0) {
-   certhash += 8;
+   if (strncmp(certhash, "sha256:", 7) == 0) {
+   certhash += 7;
} else {
-   return "expected certhash to start with '{sha256}'";
+   return "expected certhash to start with 'sha256:'";
}
 
size_t i = 0;
@@ -631,7 +631,7 @@ msettings_validate(msettings *mp, char *
return false;
}
 
-   // 5. If **certhash** is not empty, it must be of the form 
`{sha256}hexdigits`
+   // 5. If **certhash** is not empty, it must be of the form 
`sha256:hexdigits`
//where hexdigits is a non-empty sequence of 0-9, a-f, A-F and 
colons.
const char *certhash_msg = validate_certhash(mp);
if (certhash_msg) {
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: Dec2023 - Reject user@host syntax

2023-12-13 Thread Joeri van Ruth via checkin-list
Changeset: f3c9e7aa85ba for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/f3c9e7aa85ba
Modified Files:
clients/mapilib/parseurl.c
Branch: Dec2023
Log Message:

Reject user@host syntax


diffs (12 lines):

diff --git a/clients/mapilib/parseurl.c b/clients/mapilib/parseurl.c
--- a/clients/mapilib/parseurl.c
+++ b/clients/mapilib/parseurl.c
@@ -405,6 +405,8 @@ parse_classic_tcp(msettings *mp, scanner
 
// parse the host
char *host = find(sc, ":?/");
+   if (strchr(host, '@') != NULL)
+   return complain(sc, "host@user syntax is not allowed");
if (!store(mp, sc, MP_HOST, host))
return false;
 
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


MonetDB: no_type_bat - merged with default

2023-12-13 Thread Niels Nes via checkin-list
Changeset: 8a457c94e289 for MonetDB
URL: https://dev.monetdb.org/hg/MonetDB/rev/8a457c94e289
Modified Files:
MonetDB.spec
clients/Tests/MAL-signatures-hge.test
clients/Tests/MAL-signatures.test
clients/Tests/exports.stable.out
gdk/gdk.h
gdk/gdk_bat.c
gdk/gdk_batop.c
gdk/gdk_bbp.c
monetdb5/mal/mal_interpreter.c
monetdb5/mal/mal_profiler.c
monetdb5/modules/kernel/algebra.c
monetdb5/modules/mal/mal_io.c
sql/backends/monet5/sql.c
sql/backends/monet5/sql_gencode.c
sql/backends/monet5/sql_result.c
sql/backends/monet5/sql_statement.c
sql/backends/monet5/sql_upgrades.c
sql/server/rel_select.c
sql/server/sql_partition.c
sql/storage/bat/bat_storage.c
sql/storage/bat/bat_table.c
Branch: no_type_bat
Log Message:

merged with default


diffs (truncated from 5442 to 300 lines):

diff --git a/ChangeLog.Dec2023 b/ChangeLog.Dec2023
--- a/ChangeLog.Dec2023
+++ b/ChangeLog.Dec2023
@@ -1,6 +1,10 @@
 # ChangeLog file for devel
 # This file is updated with Maddlog
 
+* Fri Dec  1 2023 Sjoerd Mullender 
+- All binary packages are now signed with a new key with key fingerprint
+  DBCE 5625 94D7 1959 7B54  CE85 3F1A D47F 5521 A603.
+
 * Mon Oct 30 2023 Sjoerd Mullender 
 - The ranges of merge partitions are now pushed down into the low
   level GDK operations, giving them a handle to sometimes execute more
diff --git a/MonetDB.spec b/MonetDB.spec
--- a/MonetDB.spec
+++ b/MonetDB.spec
@@ -96,7 +96,11 @@ Source: https://www.monetdb.org/download
 # that doesn't exist and we need systemd, so instead we just require
 # the macro file that contains the definitions.
 # We need checkpolicy and selinux-policy-devel for the SELinux policy.
-BuildRequires: /usr/lib/rpm/macros.d/macros.systemd
+%if 0%{?rhel} != 7
+BuildRequires: systemd-rpm-macros
+%else
+BuildRequires: systemd
+%endif
 BuildRequires: checkpolicy
 BuildRequires: selinux-policy-devel
 BuildRequires: hardlink
@@ -220,6 +224,8 @@ accelerators.  It also has an SQL front 
 This package contains a shared library (libstream) which is needed by
 various other components.
 
+%ldconfig_scriptlets stream
+
 %files stream
 %license COPYING
 %defattr(-,root,root)
@@ -250,9 +256,35 @@ library.
 %{_includedir}/monetdb/stream_socket.h
 %{_libdir}/pkgconfig/monetdb-stream.pc
 
+%package client-lib
+Summary: MonetDB - Monet Database Management System Client Programs
+Group: Applications/Databases
+%if (0%{?fedora} >= 22)
+Recommends: %{name}-SQL-server5%{?_isa} = %{version}-%{release}
+Recommends: MonetDB5-server%{?_isa} = %{version}-%{release}
+%endif
+
+%description client-lib
+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 front end.
+
+This package contains libmapi.so, the main client library used by both
+mclient, msqldump and by the ODBC driver.  If you want to use MonetDB,
+you will very likely need this package.
+
+%ldconfig_scriptlets client-lib
+
+%files client-lib
+%license COPYING
+%defattr(-,root,root)
+%{_libdir}/libmapi.so.*
+
 %package client
 Summary: MonetDB - Monet Database Management System Client Programs
 Group: Applications/Databases
+Requires: %{name}-client-lib%{?_isa} = %{version}-%{release}
 %if (0%{?fedora} >= 22)
 Recommends: %{name}-SQL-server5%{?_isa} = %{version}-%{release}
 Recommends: MonetDB5-server%{?_isa} = %{version}-%{release}
@@ -274,14 +306,13 @@ MonetDB, you will very likely need this 
 %defattr(-,root,root)
 %{_bindir}/mclient
 %{_bindir}/msqldump
-%{_libdir}/libmapi.so.*
-%doc %{_mandir}/man1/mclient.1.gz
-%doc %{_mandir}/man1/msqldump.1.gz
+%{_mandir}/man1/mclient.1*
+%{_mandir}/man1/msqldump.1*
 
 %package client-devel
 Summary: MonetDB - Monet Database Management System Client Programs
 Group: Applications/Databases
-Requires: %{name}-client%{?_isa} = %{version}-%{release}
+Requires: %{name}-client-lib%{?_isa} = %{version}-%{release}
 Requires: %{name}-stream-devel%{?_isa} = %{version}-%{release}
 
 %description client-devel
@@ -303,7 +334,7 @@ This package contains the files needed t
 %package client-odbc
 Summary: MonetDB ODBC driver
 Group: Applications/Databases
-Requires: %{name}-client%{?_isa} = %{version}-%{release}
+Requires: %{name}-client-lib%{?_isa} = %{version}-%{release}
 Requires(post): %{_bindir}/odbcinst
 Requires(postun): %{_bindir}/odbcinst
 
@@ -477,11 +508,40 @@ format.
 %{_libdir}/monetdb5/lib_fits.so
 %endif
 
+%package -n MonetDB5-libs
+Summary: MonetDB - Monet Database Main Libraries
+Group: Applications/Databases
+
+%description -n MonetDB5-libs
+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

monetdb-java: default - Use intrinsics rather than manual flow c...

2023-12-13 Thread Joeri van Ruth via checkin-list
Changeset: 1344603ee8af for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/1344603ee8af
Modified Files:
src/main/java/org/monetdb/jdbc/MonetBlob.java
src/main/java/org/monetdb/jdbc/MonetConnection.java
src/main/java/org/monetdb/jdbc/MonetStatement.java
src/main/java/org/monetdb/mcl/parser/TupleLineParser.java
Branch: default
Log Message:

Use intrinsics rather than manual flow control


diffs (68 lines):

diff --git a/src/main/java/org/monetdb/jdbc/MonetBlob.java 
b/src/main/java/org/monetdb/jdbc/MonetBlob.java
--- a/src/main/java/org/monetdb/jdbc/MonetBlob.java
+++ b/src/main/java/org/monetdb/jdbc/MonetBlob.java
@@ -299,8 +299,8 @@ public final class MonetBlob implements 
try {
offset--;
/* transactions? what are you talking about? */
-   for (int i = (int)pos; i < len; i++)
-   buf[i] = bytes[offset + i];
+if (len - (int) pos >= 0)
+System.arraycopy(bytes, offset + (int) pos, buf, (int) pos, 
len - (int) pos);
} catch (IndexOutOfBoundsException e) {
throw new SQLException(e.getMessage(), "M0M10");
}
diff --git a/src/main/java/org/monetdb/jdbc/MonetConnection.java 
b/src/main/java/org/monetdb/jdbc/MonetConnection.java
--- a/src/main/java/org/monetdb/jdbc/MonetConnection.java
+++ b/src/main/java/org/monetdb/jdbc/MonetConnection.java
@@ -24,13 +24,8 @@ import java.sql.SQLNonTransientConnectio
 import java.sql.SQLWarning;
 import java.sql.Savepoint;
 import java.sql.Statement;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
 import java.util.Map.Entry;
-import java.util.Properties;
-import java.util.WeakHashMap;
 import java.util.concurrent.Executor;
 
 import org.monetdb.mcl.io.BufferedMCLReader;
@@ -2902,8 +2897,7 @@ public class MonetConnection
@Override
public void close() {
// feed all rows to the garbage collector
-   for (int i = 0; i < data.length; i++)
-   data[i] = null;
+Arrays.fill(data, null);
}
 
/**
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
@@ -1571,9 +1571,7 @@ final class MonetVirtualResultSet extend
if (row < 1 || row > tupleCount)
return false;
 
-   for (int i = 0; i < results[row - 1].length; i++) {
-   tlp.values[i] = results[row - 1][i];
-   }
+System.arraycopy(results[row - 1], 0, tlp.values, 0, results[row - 
1].length);
 
return true;
}
diff --git a/src/main/java/org/monetdb/mcl/parser/TupleLineParser.java 
b/src/main/java/org/monetdb/mcl/parser/TupleLineParser.java
--- a/src/main/java/org/monetdb/mcl/parser/TupleLineParser.java
+++ b/src/main/java/org/monetdb/mcl/parser/TupleLineParser.java
@@ -112,7 +112,7 @@ public final class TupleLineParser exten
if (fieldHasEscape) {
if (uesc == 
null) {
// 
first time use, create it with enough capacity, minimum 1024
-   uesc = 
new StringBuilder(fieldlen > 1024 ? fieldlen : 1024);
+   uesc = 
new StringBuilder(Math.max(fieldlen, 1024));
} else {
// 
reuse the StringBuilder by cleaning it

uesc.setLength(0);
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


monetdb-java: default - Call reader.read multiple times if neces...

2023-12-13 Thread Joeri van Ruth via checkin-list
Changeset: 17b8a0a84e62 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/17b8a0a84e62
Modified Files:
src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
Branch: default
Log Message:

Call reader.read multiple times if necessary


diffs (18 lines):

diff --git a/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java 
b/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
--- a/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
+++ b/src/main/java/org/monetdb/jdbc/MonetPreparedStatement.java
@@ -944,7 +944,13 @@ public class MonetPreparedStatement
// simply serialise the Reader data into a large buffer
final CharBuffer buf = CharBuffer.allocate((int)length); // 
have to down cast
try {
-   reader.read(buf);
+   long foo = 0;
+   while (foo < length) {
+   int n = reader.read(buf);
+   if (n < 0)
+   throw new SQLException("Stream ended 
unexpectedly at position " + foo + " out of " + length);
+   foo += n;
+   }
// We have to rewind the buffer, because otherwise 
toString() returns "".
buf.rewind();
setString(parameterIndex, buf.toString());
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


monetdb-java: default - InputStream.read must return the byte UN...

2023-12-13 Thread Joeri van Ruth via checkin-list
Changeset: 9188263368cc for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/9188263368cc
Modified Files:
src/main/java/org/monetdb/mcl/net/MapiSocket.java
Branch: default
Log Message:

InputStream.read must return the byte UNSIGNED!


diffs (21 lines):

diff --git a/src/main/java/org/monetdb/mcl/net/MapiSocket.java 
b/src/main/java/org/monetdb/mcl/net/MapiSocket.java
--- a/src/main/java/org/monetdb/mcl/net/MapiSocket.java
+++ b/src/main/java/org/monetdb/mcl/net/MapiSocket.java
@@ -1073,7 +1073,7 @@ public final class MapiSocket {
if (debug)
log("RX ", new String(block, readPos, 1, 
StandardCharsets.UTF_8), true);
 
-   return (int)block[readPos++];
+   return block[readPos++] & 0xFF;
}
 
@Override
@@ -1459,7 +1459,7 @@ public final class MapiSocket {
final byte[] buf = { 0 };
final int nread = read(buf, 0, 1);
if (nread == 1)
-   return buf[0];
+   return buf[0] & 0xFF;
else
return -1;
}
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


monetdb-java: default - Fix arithmetic overflow

2023-12-13 Thread Joeri van Ruth via checkin-list
Changeset: 93b256bf29a7 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/93b256bf29a7
Modified Files:
src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java
src/main/java/org/monetdb/jdbc/MonetStatement.java
Branch: default
Log Message:

Fix arithmetic overflow


diffs (42 lines):

diff --git a/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java 
b/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java
--- a/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java
+++ b/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java
@@ -1317,7 +1317,7 @@ public final class MonetDatabaseMetaData
 */
@Override
public int getMaxBinaryLiteralLength() {
-   return 2*1024*1024*1024 - 2;// MonetDB supports null 
terminated strings of max 2GB, see function: int UTF8_strlen()
+   return 0x7ffe;  // MonetDB supports null terminated 
strings of max 2GB, see function: int UTF8_strlen()
}
 
/**
@@ -1327,7 +1327,7 @@ public final class MonetDatabaseMetaData
 */
@Override
public int getMaxCharLiteralLength() {
-   return 2*1024*1024*1024 - 2;// MonetDB supports null 
terminated strings of max 2GB, see function: int UTF8_strlen()
+   return 0x7ffe;  // MonetDB supports null terminated 
strings of max 2GB, see function: int UTF8_strlen()
}
 
/**
@@ -1492,7 +1492,7 @@ public final class MonetDatabaseMetaData
 */
@Override
public int getMaxStatementLength() {
-   return 2*1024*1024*1024 - 2;// MonetDB supports null 
terminated strings of max 2GB, see function: int UTF8_strlen()
+   return 0x7ffe;  // MonetDB supports null terminated 
strings of max 2GB, see function: int UTF8_strlen()
}
 
/**
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
@@ -689,7 +689,7 @@ public class MonetStatement
 */
@Override
public int getMaxFieldSize() {
-   return 2*1024*1024*1024 - 2;// MonetDB supports null 
terminated strings of max 2GB, see function: int UTF8_strlen()
+   return 0x7ffe;  // MonetDB supports null terminated 
strings of max 2GB, see function: int UTF8_strlen()
}
 
/**
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org


monetdb-java: default - Fix the computed CHAR_OCTET_LENGTH value...

2023-12-13 Thread Martin van Dinther via checkin-list
Changeset: 4117aa40a6b9 for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/4117aa40a6b9
Modified Files:
src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java
tests/JDBC_API_Tester.java
Branch: default
Log Message:

Fix the computed CHAR_OCTET_LENGTH value of resultsets returned by 
getColumns(),  getFunctionColumns() and getProcedureColumns().
It now also returns a bigint instead of int to prevent computation overflow.


diffs (127 lines):

diff --git a/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java 
b/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java
--- a/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java
+++ b/src/main/java/org/monetdb/jdbc/MonetDatabaseMetaData.java
@@ -1815,7 +1815,7 @@ public final class MonetDatabaseMetaData
"cast(null as char(1)) AS \"COLUMN_DEF\", " +
"cast(0 as int) AS \"SQL_DATA_TYPE\", " +
"cast(0 as int) AS \"SQL_DATETIME_SUB\", " +
-   "cast(CASE WHEN a.\"type\" IN ('char','varchar','clob') 
THEN a.\"type_digits\" ELSE NULL END as int) AS \"CHAR_OCTET_LENGTH\", " +
+   "cast(CASE WHEN a.\"type\" IN 
('varchar','clob','char','json','url','xml') THEN 4 * a.\"type_digits\" WHEN 
a.\"type\" = 'blob' THEN a.\"type_digits\" ELSE NULL END as bigint) AS 
\"CHAR_OCTET_LENGTH\", " +
// in MonetDB procedures have no return value by 
design. The arguments in sys.args are numbered from 0 so we must add 1 to 
comply with the API specification.
"cast(a.\"number\" + 1 as int) AS \"ORDINAL_POSITION\", 
" +
"cast('' as varchar(3)) AS \"IS_NULLABLE\", " +
@@ -2131,7 +2131,7 @@ public final class MonetDatabaseMetaData
"c.\"default\" AS \"COLUMN_DEF\", " +
"cast(0 as int) AS \"SQL_DATA_TYPE\", " +
"cast(0 as int) AS \"SQL_DATETIME_SUB\", " +
-   "cast(CASE WHEN c.\"type\" IN ('char','varchar','clob') 
THEN c.\"type_digits\" ELSE NULL END as int) AS \"CHAR_OCTET_LENGTH\", " +
+   "cast(CASE WHEN c.\"type\" IN 
('varchar','clob','char','json','url','xml') THEN 4 * c.\"type_digits\" ELSE 
NULL END as bigint) AS \"CHAR_OCTET_LENGTH\", " +
"cast(c.\"number\" + 1 as int) AS \"ORDINAL_POSITION\", 
" +
"cast(CASE c.\"null\" WHEN true THEN 'YES' WHEN false 
THEN 'NO' ELSE '' END AS varchar(3)) AS \"IS_NULLABLE\", " +
"cast(null AS char(1)) AS \"SCOPE_CATALOG\", " +
@@ -3034,7 +3034,9 @@ public final class MonetDatabaseMetaData
" WHEN 'sec_interval' THEN 'interval second'" +
" ELSE \"sqlname\" END AS \"TYPE_NAME\", " +

"cast(").append(MonetDriver.getSQLTypeMap("\"sqlname\"")).append(" AS int) AS 
\"DATA_TYPE\", " +
-   "\"digits\" AS \"PRECISION\", " +   // note that 
when radix is 2 the precision shows the number of bits
+   "cast(CASE WHEN \"sqlname\" IN 
('time','timetz','timestamp','timestamptz') THEN \"digits\" -1" +
+   " WHEN \"sqlname\" IN 
('sec_interval','day_interval') THEN 3" +
+   " WHEN \"sqlname\" = 'month_interval' THEN 0 
ELSE \"digits\" END AS int) AS \"PRECISION\", " +  // note that when radix is 2 
the precision shows the number of bits
"cast(CASE WHEN \"sqlname\" IN 
('char','varchar','sec_interval','day_interval','month_interval') THEN " +
" WHEN \"sqlname\" IN 
('clob','inet','json','url','uuid','date','time','timetz','timestamp','timestamptz','blob','sqlblob','xml')
 THEN \"sqlname\"||' '''" +
" ELSE NULL END AS varchar(16)) AS 
\"LITERAL_PREFIX\", " +
@@ -3043,7 +3045,7 @@ public final class MonetDatabaseMetaData
" ELSE NULL END AS varchar(2)) AS 
\"LITERAL_SUFFIX\", " +
"CASE WHEN \"sqlname\" IN ('char','varchar') THEN 'max 
length'" +
" WHEN \"sqlname\" = 'decimal' THEN 'precision, 
scale'" +
-   " WHEN \"sqlname\" IN 
('time','timetz','timestamp','timestamptz','sec_interval') THEN 'precision'" +
+   " WHEN \"sqlname\" IN 
('time','timetz','timestamp','timestamptz') THEN 'precision'" +
" ELSE NULL END AS \"CREATE_PARAMS\", " +
"cast(CASE WHEN \"systemname\" = 'oid' THEN " + 
DatabaseMetaData.typeNoNulls +
" ELSE " + DatabaseMetaData.typeNullable + " 
END AS smallint) AS \"NULLABLE\", " +
@@ -3057,7 +3059,8 @@ public final class MonetDatabaseMetaData
"CASE WHEN \"sqlname\" IN 
('sec_interval','day_interval','month_interval') THEN \"s

monetdb-java: default - correct indentation

2023-12-13 Thread Martin van Dinther via checkin-list
Changeset: 726a1d7b168c for monetdb-java
URL: https://dev.monetdb.org/hg/monetdb-java/rev/726a1d7b168c
Modified Files:
src/main/java/org/monetdb/jdbc/MonetBlob.java
src/main/java/org/monetdb/jdbc/MonetConnection.java
src/main/java/org/monetdb/jdbc/MonetStatement.java
Branch: default
Log Message:

correct indentation


diffs (38 lines):

diff --git a/src/main/java/org/monetdb/jdbc/MonetBlob.java 
b/src/main/java/org/monetdb/jdbc/MonetBlob.java
--- a/src/main/java/org/monetdb/jdbc/MonetBlob.java
+++ b/src/main/java/org/monetdb/jdbc/MonetBlob.java
@@ -299,8 +299,8 @@ public final class MonetBlob implements 
try {
offset--;
/* transactions? what are you talking about? */
-if (len - (int) pos >= 0)
-System.arraycopy(bytes, offset + (int) pos, buf, (int) pos, 
len - (int) pos);
+   if (len - (int) pos >= 0)
+   System.arraycopy(bytes, offset + (int) pos, 
buf, (int) pos, len - (int) pos);
} catch (IndexOutOfBoundsException e) {
throw new SQLException(e.getMessage(), "M0M10");
}
diff --git a/src/main/java/org/monetdb/jdbc/MonetConnection.java 
b/src/main/java/org/monetdb/jdbc/MonetConnection.java
--- a/src/main/java/org/monetdb/jdbc/MonetConnection.java
+++ b/src/main/java/org/monetdb/jdbc/MonetConnection.java
@@ -2897,7 +2897,7 @@ public class MonetConnection
@Override
public void close() {
// feed all rows to the garbage collector
-Arrays.fill(data, null);
+   Arrays.fill(data, null);
}
 
/**
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
@@ -1571,7 +1571,7 @@ final class MonetVirtualResultSet extend
if (row < 1 || row > tupleCount)
return false;
 
-System.arraycopy(results[row - 1], 0, tlp.values, 0, results[row - 
1].length);
+   System.arraycopy(results[row - 1], 0, tlp.values, 0, 
results[row - 1].length);
 
return true;
}
___
checkin-list mailing list -- checkin-list@monetdb.org
To unsubscribe send an email to checkin-list-le...@monetdb.org