From 80abdc8261e1d1a9c2e9631b4b4fcaa73851c9b6 Mon Sep 17 00:00:00 2001 From: t-horikawa Date: Thu, 25 Jan 2024 16:53:23 +0900 Subject: [PATCH] revise handshake example --- .../tsubakuro/examples/handshake/Client.java | 60 +++++++++++++++++++ .../examples/handshake/CreateTable.java | 26 -------- .../tsubakuro/examples/handshake/Main.java | 2 +- 3 files changed, 61 insertions(+), 27 deletions(-) create mode 100644 modules/clients/src/main/java/com/tsurugidb/tsubakuro/examples/handshake/Client.java delete mode 100644 modules/clients/src/main/java/com/tsurugidb/tsubakuro/examples/handshake/CreateTable.java diff --git a/modules/clients/src/main/java/com/tsurugidb/tsubakuro/examples/handshake/Client.java b/modules/clients/src/main/java/com/tsurugidb/tsubakuro/examples/handshake/Client.java new file mode 100644 index 0000000..c9e286c --- /dev/null +++ b/modules/clients/src/main/java/com/tsurugidb/tsubakuro/examples/handshake/Client.java @@ -0,0 +1,60 @@ +package com.tsurugidb.tsubakuro.examples.handshake; + +import java.io.IOException; + +import com.tsurugidb.tsubakuro.exception.ServerException; +import com.tsurugidb.tsubakuro.common.Session; +import com.tsurugidb.tsubakuro.common.SessionBuilder; +import com.tsurugidb.tsubakuro.sql.SqlClient; +import com.tsurugidb.tsubakuro.sql.Transaction; +import com.tsurugidb.tsubakuro.sql.Placeholders; +import com.tsurugidb.tsubakuro.sql.Parameters; + +public final class Client { + // this example requires tsurugi.ini that has prepare_test_tables=true entry in sql section. + public static void doClient(String url) throws IOException, ServerException, InterruptedException { + try (Session session = SessionBuilder.connect(url).withLabel("exampleLabel").withApplicationName("exampleApplication").create(); + SqlClient sqlClient = SqlClient.attach(session); + Transaction transaction = sqlClient.createTransaction().get()) { + + var resultSet = transaction.executeQuery("SELECT * FROM T0").get(); + var metadata = resultSet.getMetadata().getColumns(); + + int count = 0; + while (resultSet.nextRow()) { + int columnIndex = 0; + while (resultSet.nextColumn()) { + if (!resultSet.isNull()) { + switch (metadata.get(columnIndex).getAtomType()) { + case INT4: + resultSet.fetchInt4Value(); + break; + case INT8: + resultSet.fetchInt8Value(); + break; + case FLOAT4: + resultSet.fetchFloat4Value(); + break; + case FLOAT8: + resultSet.fetchFloat8Value(); + break; + case CHARACTER: + resultSet.fetchCharacterValue(); + break; + default: + throw new IOException("the column type is invalid"); + } + } + columnIndex++; + } + count++; + } + + transaction.commit().get(); + } + + } + + private Client() { + } +} diff --git a/modules/clients/src/main/java/com/tsurugidb/tsubakuro/examples/handshake/CreateTable.java b/modules/clients/src/main/java/com/tsurugidb/tsubakuro/examples/handshake/CreateTable.java deleted file mode 100644 index f312ec5..0000000 --- a/modules/clients/src/main/java/com/tsurugidb/tsubakuro/examples/handshake/CreateTable.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.tsurugidb.tsubakuro.examples.handshake; - -import java.io.IOException; - -import com.tsurugidb.tsubakuro.exception.ServerException; -import com.tsurugidb.tsubakuro.common.Session; -import com.tsurugidb.tsubakuro.common.SessionBuilder; -import com.tsurugidb.tsubakuro.sql.SqlClient; -import com.tsurugidb.tsubakuro.sql.Transaction; -import com.tsurugidb.tsubakuro.sql.Placeholders; -import com.tsurugidb.tsubakuro.sql.Parameters; - -public final class CreateTable { - public static void doCreateTable(String url) throws IOException, ServerException, InterruptedException { - try (Session session = SessionBuilder.connect(url).withLabel("exampleLabel").withApplicationName("exampleApplication").create(); - SqlClient sqlClient = SqlClient.attach(session); - Transaction transaction = sqlClient.createTransaction().get()) { - - transaction.executeStatement("CREATE TABLE foo (bar1 INT, bar2 DOUBLE, bar3 VARCHAR(20), PRIMARY KEY(bar1))").get(); - transaction.commit().get(); - } - } - - private CreateTable() { - } -} diff --git a/modules/clients/src/main/java/com/tsurugidb/tsubakuro/examples/handshake/Main.java b/modules/clients/src/main/java/com/tsurugidb/tsubakuro/examples/handshake/Main.java index b8d2c81..69b54fe 100644 --- a/modules/clients/src/main/java/com/tsurugidb/tsubakuro/examples/handshake/Main.java +++ b/modules/clients/src/main/java/com/tsurugidb/tsubakuro/examples/handshake/Main.java @@ -9,7 +9,7 @@ public final class Main { public static void main(String[] args) { try { - CreateTable.doCreateTable(url); + Client.doClient(url); } catch (IOException | ServerException | InterruptedException e) { System.out.println(e); e.printStackTrace();