diff --git a/core/src/test/java/org/apache/calcite/test/JdbcAdapterTest.java b/core/src/test/java/org/apache/calcite/test/JdbcAdapterTest.java index 8d8d66371c8..df12fbe8a8d 100644 --- a/core/src/test/java/org/apache/calcite/test/JdbcAdapterTest.java +++ b/core/src/test/java/org/apache/calcite/test/JdbcAdapterTest.java @@ -80,6 +80,35 @@ class JdbcAdapterTest { .returnsCount(14); } + /** Test case for + * [CALCITE-5161] + * NPE when inserting a null value into a decimal column. */ + @Test void testInsertNull() { + // Insert data with null values + CalciteAssert.model(FoodmartSchema.FOODMART_MODEL) + .query("insert into \"foodmart\".\"promotion\" " + + "values (9999, 111, 'Test', NULL, NULL, NULL, NULL)") + .updates(1); + + // Verify data was inserted + CalciteAssert.model(FoodmartSchema.FOODMART_MODEL) + .query("select \"promotion_id\", \"promotion_district_id\", \"promotion_name\", " + + "\"media_type\", \"cost\", \"start_date\", \"end_date\" " + + "from \"foodmart\".\"promotion\" where \"promotion_id\" = 9999") + .returns("promotion_id=9999; promotion_district_id=111; promotion_name=Test; " + + "media_type=null; cost=null; start_date=null; end_date=null\n"); + + // Delete the inserted data + CalciteAssert.model(FoodmartSchema.FOODMART_MODEL) + .query("delete from \"foodmart\".\"promotion\" where \"promotion_id\" = 9999") + .updates(1); + + // Verify data was deleted + CalciteAssert.model(FoodmartSchema.FOODMART_MODEL) + .query("select count(*) as c from \"foodmart\".\"promotion\" where \"promotion_id\" = 9999") + .returns("C=0\n"); + } + /** Test case for * [CALCITE-6462] * VolcanoPlanner internal valid may throw exception when log trace is enabled. */