Mercurial > hg > monetdb-java
changeset 526:6060ca8c5c1a onclient
Add test for uploadFrom methods
author | Joeri van Ruth <joeri.van.ruth@monetdbsolutions.com> |
---|---|
date | Thu, 26 Aug 2021 14:24:31 +0200 (2021-08-26) |
parents | 70ff796c42f7 |
children | ccf9c7fbdb50 |
files | src/main/java/org/monetdb/jdbc/MonetConnection.java tests/OnClientTester.java |
diffstat | 2 files changed, 50 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/src/main/java/org/monetdb/jdbc/MonetConnection.java +++ b/src/main/java/org/monetdb/jdbc/MonetConnection.java @@ -3336,7 +3336,7 @@ public class MonetConnection uploadFrom(reader); } - public void uploadFrom(BufferedReader reader) throws IOException { + public void uploadFrom(Reader reader) throws IOException { OutputStream s = getStream(); OutputStreamWriter writer = new OutputStreamWriter(s, StandardCharsets.UTF_8); char[] buffer = new char[64 * 1024];
--- a/tests/OnClientTester.java +++ b/tests/OnClientTester.java @@ -5,6 +5,7 @@ import org.monetdb.jdbc.MonetUploadHandl import java.io.*; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.nio.charset.StandardCharsets; import java.sql.*; public final class OnClientTester { @@ -437,4 +438,51 @@ public final class OnClientTester { test_Download(4_000_000); } -} \ No newline at end of file + public void test_UploadFromStream() throws SQLException, Failure { + prepare(); + MonetUploadHandler handler = new MonetUploadHandler() { + String data = "1|one\n2|two\n3|three\n"; + + @Override + public void handleUpload(MonetConnection.Upload handle, String name, boolean textMode, int offset) throws IOException { + ByteArrayInputStream s = new ByteArrayInputStream(data.getBytes(StandardCharsets.UTF_8)); + handle.uploadFrom(s); + } + }; + conn.setUploadHandler(handler); + update("COPY INTO foo FROM 'banana' ON CLIENT", 3); + queryInt("SELECT i FROM foo WHERE t = 'three'", 3); + } + + public void test_UploadFromReader() throws SQLException, Failure { + prepare(); + MonetUploadHandler handler = new MonetUploadHandler() { + String data = "1|one\n2|two\n3|three\n"; + + @Override + public void handleUpload(MonetConnection.Upload handle, String name, boolean textMode, int offset) throws IOException { + StringReader r = new StringReader(data); + handle.uploadFrom(r); + } + }; + conn.setUploadHandler(handler); + update("COPY INTO foo FROM 'banana' ON CLIENT", 3); + queryInt("SELECT i FROM foo WHERE t = 'three'", 3); + } + + public void test_UploadFromReaderOffset() throws SQLException, Failure { + prepare(); + MonetUploadHandler handler = new MonetUploadHandler() { + String data = "1|one\n2|two\n3|three\n"; + + @Override + public void handleUpload(MonetConnection.Upload handle, String name, boolean textMode, int offset) throws IOException { + BufferedReader r = new BufferedReader(new StringReader(data)); + handle.uploadFrom(r, offset); + } + }; + conn.setUploadHandler(handler); + update("COPY OFFSET 2 INTO foo FROM 'banana' ON CLIENT", 2); + queryInt("SELECT i FROM foo WHERE t = 'three'", 3); + } +}