Skip to content

Commit 1dbbb35

Browse files
Remove .idea directory
1 parent c2f9295 commit 1dbbb35

File tree

2 files changed

+78
-0
lines changed

2 files changed

+78
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@
66
/sample/config.properties
77
.github/workflows/startup/99_done.sh
88
.github/workflows/startup/done
9+
.idea/

src/test/java/oracle/r2dbc/impl/OracleStatementImplTest.java

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@
3535
import oracle.r2dbc.OracleR2dbcTypes;
3636
import oracle.r2dbc.OracleR2dbcWarning;
3737
import oracle.r2dbc.test.DatabaseConfig;
38+
import oracle.r2dbc.test.TestUtils;
39+
import oracle.sql.json.OracleJsonFactory;
40+
import oracle.sql.json.OracleJsonObject;
3841
import org.junit.jupiter.api.Test;
3942
import org.reactivestreams.Publisher;
4043
import reactor.core.publisher.Flux;
@@ -66,6 +69,7 @@
6669
import static java.util.Arrays.asList;
6770
import static oracle.r2dbc.test.DatabaseConfig.connectTimeout;
6871
import static oracle.r2dbc.test.DatabaseConfig.connectionFactoryOptions;
72+
import static oracle.r2dbc.test.DatabaseConfig.databaseVersion;
6973
import static oracle.r2dbc.test.DatabaseConfig.newConnection;
7074
import static oracle.r2dbc.test.DatabaseConfig.sharedConnection;
7175
import static oracle.r2dbc.test.TestUtils.constructObject;
@@ -86,6 +90,7 @@
8690
import static org.junit.jupiter.api.Assertions.assertThrows;
8791
import static org.junit.jupiter.api.Assertions.assertTrue;
8892
import static org.junit.jupiter.api.Assertions.fail;
93+
import static org.junit.jupiter.api.Assumptions.assumeTrue;
8994

9095
/**
9196
* Verifies that
@@ -2977,6 +2982,78 @@ public void testInOutObjectCall() {
29772982
}
29782983
}
29792984

2985+
/**
2986+
* Verifies inserts and queries with a JSON Duality View.
2987+
*/
2988+
@Test
2989+
public void testJsonDualityView() {
2990+
// JSON Duality Views were introduced in Oracle Database version 23c, so
2991+
// this test is skipped if the version is older than 23c.
2992+
assumeTrue(databaseVersion() >= 23,
2993+
"JSON Duality Views are not supported by database versions older than" +
2994+
" 23");
2995+
2996+
Connection connection = awaitOne(sharedConnection());
2997+
try {
2998+
awaitExecution(connection.createStatement(
2999+
"CREATE TABLE testJsonDualityViewTable (" +
3000+
"id NUMBER PRIMARY KEY, value VARCHAR(1000))"));
3001+
awaitExecution(connection.createStatement(
3002+
"CREATE JSON DUALITY VIEW testJsonDualityView AS" +
3003+
" SELECT JSON {'id' : t.id, 'value' : t.value}" +
3004+
" FROM testJsonDualityViewTable t" +
3005+
" WITH INSERT UPDATE DELETE"));
3006+
3007+
// Verify an insert
3008+
OracleJsonObject insertObject = new OracleJsonFactory().createObject();
3009+
insertObject.put("id", 1);
3010+
insertObject.put("value", "a");
3011+
Statement insert = connection.createStatement(
3012+
"INSERT INTO testJsonDualityView VALUES (?)")
3013+
.bind(0, insertObject);
3014+
awaitUpdate(1, insert);
3015+
3016+
// Verify a query
3017+
Statement query = connection.createStatement(
3018+
"SELECT data FROM testJsonDualityView");
3019+
Result queryResult = awaitOne(query.execute());
3020+
OracleJsonObject queryObject =
3021+
awaitOne(queryResult.map(row -> row.get(0, OracleJsonObject.class)));
3022+
queryObject =
3023+
new OracleJsonFactory().createObject(queryObject);
3024+
queryObject.remove("_metadata"); // Remove this field for assertEquals
3025+
assertEquals(insertObject, queryObject);
3026+
3027+
// Verify an update that returns generated keys
3028+
OracleJsonObject updateObject = new OracleJsonFactory().createObject();
3029+
updateObject.put("id", 1);
3030+
updateObject.put("value", "b");
3031+
Statement update = connection.createStatement(
3032+
"UPDATE testJsonDualityView v" +
3033+
" SET data = ?" +
3034+
" WHERE v.data.id = ?");
3035+
update.bind(0, updateObject);
3036+
update.bind(1, 1);
3037+
update.returnGeneratedValues("data");
3038+
Result updateResult = awaitOne(update.execute());
3039+
OracleJsonObject generatedUpdateObject =
3040+
awaitOne(updateResult.map(row -> row.get(0, OracleJsonObject.class)));
3041+
generatedUpdateObject =
3042+
new OracleJsonFactory().createObject(generatedUpdateObject);
3043+
generatedUpdateObject.remove("_metadata"); // Remove this field for assertEquals
3044+
assertEquals(updateObject, generatedUpdateObject);
3045+
3046+
}
3047+
finally {
3048+
tryAwaitExecution(connection.createStatement(
3049+
"DROP VIEW testJsonDualityView"));
3050+
tryAwaitExecution(connection.createStatement(
3051+
"DROP TABLE testJsonDualityViewTable"));
3052+
tryAwaitNone(connection.close());
3053+
}
3054+
3055+
}
3056+
29803057
/**
29813058
* Connect to the database configured by {@link DatabaseConfig}, with a
29823059
* the connection configured to use a given {@code executor} for async

0 commit comments

Comments
 (0)