diff --git a/bom/pom.xml b/bom/pom.xml
index 2715a75f343..9aecd89d1d6 100644
--- a/bom/pom.xml
+++ b/bom/pom.xml
@@ -762,6 +762,11 @@
helidon-integrations-db-mysql
${helidon.version}
+
+ io.helidon.integrations.db
+ helidon-integrations-db-pgsql
+ ${helidon.version}
+
io.helidon.integrations.cdi
helidon-integrations-cdi-configurable
diff --git a/dbclient/pom.xml b/dbclient/pom.xml
index ecfbfb10a6d..951ae314119 100644
--- a/dbclient/pom.xml
+++ b/dbclient/pom.xml
@@ -19,16 +19,17 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
+
io.helidon
helidon-project
4.0.0-SNAPSHOT
- pom
io.helidon.dbclient
helidon-dbclient-project
Helidon Database Client Project
+ pom
dbclient
@@ -41,4 +42,14 @@
health
jsonp
+
+
+
+ tests
+
+ tests
+
+
+
+
diff --git a/tests/integration/dbclient/common/pom.xml b/dbclient/tests/common/pom.xml
similarity index 70%
rename from tests/integration/dbclient/common/pom.xml
rename to dbclient/tests/common/pom.xml
index aec8eae0d9f..0c6d8860746 100644
--- a/tests/integration/dbclient/common/pom.xml
+++ b/dbclient/tests/common/pom.xml
@@ -1,6 +1,7 @@
-
+
4.0.0
- io.helidon.tests.integration.dbclient
- helidon-tests-integration-dbclient-project
+ io.helidon.dbclient
+ helidon-dbclient-tests-project
4.0.0-SNAPSHOT
- ../pom.xml
- helidon-tests-integration-dbclient-common
- Helidon Tests Integration Database Client Common
+
+ helidon-dbclient-tests-common
+ Helidon Database Client Common Tests
+ Database client tests for all vendors
- io.helidon.tests.integration
- helidon-tests-integration-harness
- ${project.version}
+ io.helidon.dbclient
+ helidon-dbclient-metrics
+
+
+ io.helidon.dbclient
+ helidon-dbclient-health
io.helidon.config
@@ -44,20 +50,25 @@
helidon-config-yaml
- io.helidon.metrics
- helidon-metrics
+ io.helidon.webserver
+ helidon-webserver
- io.helidon.dbclient
- helidon-dbclient-health
+ io.helidon.webserver.observe
+ helidon-webserver-observe-metrics
- io.helidon.dbclient
- helidon-dbclient-metrics
+ io.helidon.webserver.observe
+ helidon-webserver-observe-health
+
+
+ io.helidon.tests.integration
+ helidon-tests-integration-harness
+ ${project.version}
- org.eclipse.parsson
- parsson
+ io.helidon.webserver.testing.junit5
+ helidon-webserver-testing-junit5
org.junit.jupiter
@@ -67,22 +78,6 @@
org.hamcrest
hamcrest-all
-
- io.helidon.webserver
- helidon-webserver
-
-
- io.helidon.webserver.observe
- helidon-webserver-observe-metrics
-
-
- io.helidon.webserver.observe
- helidon-webserver-observe-health
-
-
- io.micrometer
- micrometer-core
-
diff --git a/dbclient/tests/common/src/main/java/io/helidon/dbclient/tests/common/model/Critter.java b/dbclient/tests/common/src/main/java/io/helidon/dbclient/tests/common/model/Critter.java
new file mode 100644
index 00000000000..e94f52c98e9
--- /dev/null
+++ b/dbclient/tests/common/src/main/java/io/helidon/dbclient/tests/common/model/Critter.java
@@ -0,0 +1,227 @@
+/*
+ * Copyright (c) 2021, 2024 Oracle and/or its affiliates.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package io.helidon.dbclient.tests.common.model;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import io.helidon.dbclient.DbMapper;
+import io.helidon.dbclient.DbRow;
+
+import static io.helidon.dbclient.tests.common.model.Kind.KINDS;
+
+/**
+ * {@code Critter} POJO.
+ */
+@SuppressWarnings("SpellCheckingInspection")
+public class Critter {
+
+ /**
+ * {@code Critter} POJO mapper.
+ */
+ public static final class CritterMapper implements DbMapper {
+
+ public static final CritterMapper INSTANCE = new CritterMapper();
+
+ @Override
+ public Critter read(DbRow row) {
+ return new Critter(row.column("id").get(Integer.class), row.column("name").get(String.class));
+ }
+
+ @Override
+ public Map toNamedParameters(Critter value) {
+ Map params = new HashMap<>(2);
+ params.put("id", value.getId());
+ params.put("name", value.getName());
+ return params;
+ }
+
+ @Override
+ public List> toIndexedParameters(Critter value) {
+ List