Skip to content

Commit cc9b794

Browse files
Add JSON_VALUE test
1 parent 7515e0b commit cc9b794

File tree

1 file changed

+21
-0
lines changed

1 file changed

+21
-0
lines changed

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

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3042,6 +3042,7 @@ public void testReturnParameterJsonDualityView() {
30423042
" FROM testReturnParameterJsonDualityViewTable t" +
30433043
" WITH INSERT UPDATE DELETE"));
30443044

3045+
// Verify returning the "data" column
30453046
OracleJsonObject insertObject = new OracleJsonFactory().createObject();
30463047
insertObject.put("id", 1);
30473048
insertObject.put("value", "a");
@@ -3061,6 +3062,26 @@ public void testReturnParameterJsonDualityView() {
30613062
outParameters.get(0, OracleJsonObject.class)));
30623063
insertObject.put("_metadata", returnObject.get("_metadata"));
30633064
assertEquals(insertObject, returnObject);
3065+
3066+
// Verify returning a JSON_VALUE expression
3067+
OracleJsonObject insertObjectB = new OracleJsonFactory().createObject();
3068+
insertObjectB.put("id", 2);
3069+
insertObjectB.put("value", "b");
3070+
Statement returnStatementB = connection.createStatement(
3071+
"BEGIN" +
3072+
" INSERT INTO testReturnParameterJsonDualityView" +
3073+
" VALUES (?)" +
3074+
" RETURNING JSON_VALUE(DATA, '$.id')" +
3075+
" INTO ?;" +
3076+
" END;");
3077+
returnStatementB.bind(0, insertObjectB);
3078+
returnStatementB.bind(1, Parameters.out(R2dbcType.NUMERIC));
3079+
3080+
Result returnResultB = awaitOne(returnStatementB.execute());
3081+
int returnId =
3082+
awaitOne(returnResultB.map(outParameters ->
3083+
outParameters.get(0, Integer.class)));
3084+
assertEquals(insertObjectB.getInt("id"), returnId);
30643085
}
30653086
finally {
30663087
tryAwaitExecution(connection.createStatement(

0 commit comments

Comments
 (0)