diff --git a/README.md b/README.md index bfa4ab9..198e9ee 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # GridDB Foreign Data Wrapper for PostgreSQL This PostgreSQL extension is a Foreign Data Wrapper (FDW) for [GridDB][1]. -This version of griddb_fdw can work for PostgreSQL 10, 11, 12, 13 and 14. It is confirmed in GridDB 4.6.0. +This version of griddb_fdw can work for PostgreSQL 10, 11, 12, 13 and 14. It is confirmed in GridDB 4.6.1. ## 1. Installation griddb_fdw requires GridDB's C client library. This library can be downloaded from the [GridDB][1] website on github[1]. @@ -187,6 +187,9 @@ Returning is way to obtain data if rows are modified by INSERT, UPDATE, and DELE INSERT INTO ft1 (c0, c1) VALUES (1, 2) RETURNING c0, c1; ``` +#### Don't support DIRECT MODIFICATION +#### Don't support IMPORT FOREIGN SCHEMA with option import_generated + ## 5. License Copyright (c) 2017-2021, TOSHIBA Corporation Copyright (c) 2011-2016, EnterpriseDB Corporation diff --git a/deparse.c b/deparse.c index 6065af1..95360d4 100644 --- a/deparse.c +++ b/deparse.c @@ -88,7 +88,8 @@ typedef struct deparse_expr_cxt StringInfo buf; /* output buffer to append to */ List **params_list; /* exprs that will become remote Params */ - bool can_skip_cast; /* outer function can skip int2/int4/int8/float4/float8 cast */ + bool can_skip_cast; /* outer function can skip + * int2/int4/int8/float4/float8 cast */ GridDBAggref *aggref; } deparse_expr_cxt; diff --git a/expected/10.17/aggregates.out b/expected/10.18/aggregates.out similarity index 100% rename from expected/10.17/aggregates.out rename to expected/10.18/aggregates.out diff --git a/expected/10.17/float4.out b/expected/10.18/float4.out similarity index 100% rename from expected/10.17/float4.out rename to expected/10.18/float4.out diff --git a/expected/10.17/float8.out b/expected/10.18/float8.out similarity index 100% rename from expected/10.17/float8.out rename to expected/10.18/float8.out diff --git a/expected/10.17/griddb_fdw.out b/expected/10.18/griddb_fdw.out similarity index 99% rename from expected/10.17/griddb_fdw.out rename to expected/10.18/griddb_fdw.out index 3b1e0a4..f7fc89b 100644 --- a/expected/10.17/griddb_fdw.out +++ b/expected/10.18/griddb_fdw.out @@ -687,14 +687,14 @@ ERROR: rowkey-column update is not supported SELECT * FROM public.griddb_fdw_version(); griddb_fdw_version -------------------- - 20100 + 20101 (1 row) --Testcase 116: SELECT griddb_fdw_version(); griddb_fdw_version -------------------- - 20100 + 20101 (1 row) --Test pushdown LIMIT...OFFSET diff --git a/expected/10.17/griddb_fdw_data_type.out b/expected/10.18/griddb_fdw_data_type.out similarity index 100% rename from expected/10.17/griddb_fdw_data_type.out rename to expected/10.18/griddb_fdw_data_type.out diff --git a/expected/10.17/griddb_fdw_post.out b/expected/10.18/griddb_fdw_post.out similarity index 99% rename from expected/10.17/griddb_fdw_post.out rename to expected/10.18/griddb_fdw_post.out index 84b9fb3..78c3a3f 100644 --- a/expected/10.17/griddb_fdw_post.out +++ b/expected/10.18/griddb_fdw_post.out @@ -9837,9 +9837,11 @@ FROM SERVER griddb_svr INTO import_grid4; import_grid4 | FLOAT8_TBL | griddb_svr | | import_grid4 | FLOAT8_TMP | griddb_svr | | import_grid4 | INT2_TBL | griddb_svr | | + import_grid4 | INT2_TMP | griddb_svr | | import_grid4 | INT4_TBL | griddb_svr | | import_grid4 | INT4_TMP | griddb_svr | | import_grid4 | INT8_TBL | griddb_svr | | + import_grid4 | INT8_TMP | griddb_svr | | import_grid4 | J1_TBL | griddb_svr | | import_grid4 | J2_TBL | griddb_svr | | import_grid4 | T0 | griddb_svr | | @@ -10097,7 +10099,7 @@ FROM SERVER griddb_svr INTO import_grid4; import_grid4 | zt1 | griddb_svr | | import_grid4 | zt2 | griddb_svr | | import_grid4 | zt3 | griddb_svr | | -(264 rows) +(266 rows) -- Assorted error cases IMPORT FOREIGN SCHEMA griddb_schema FROM SERVER griddb_svr INTO import_grid4; @@ -10290,6 +10292,7 @@ NOTICE: relation "nt3" already exists, skipping NOTICE: relation "agg_t6" already exists, skipping NOTICE: relation "loc2" already exists, skipping NOTICE: relation "INT2_TBL" already exists, skipping +NOTICE: relation "INT2_TMP" already exists, skipping NOTICE: relation "batch_table_p1" already exists, skipping NOTICE: relation "tenk1" already exists, skipping NOTICE: relation "innertab" already exists, skipping @@ -10364,6 +10367,7 @@ NOTICE: relation "INT4_TMP" already exists, skipping NOTICE: relation "bitwise_test" already exists, skipping NOTICE: relation "agg_t1" already exists, skipping NOTICE: relation "INT8_TBL" already exists, skipping +NOTICE: relation "INT8_TMP" already exists, skipping NOTICE: relation "hpart13" already exists, skipping IMPORT FOREIGN SCHEMA nonesuch FROM SERVER griddb_svr INTO import_grid4; -- same as 'public' NOTICE: relation "aggtest" already exists, skipping @@ -10556,6 +10560,7 @@ NOTICE: relation "nt3" already exists, skipping NOTICE: relation "agg_t6" already exists, skipping NOTICE: relation "loc2" already exists, skipping NOTICE: relation "INT2_TBL" already exists, skipping +NOTICE: relation "INT2_TMP" already exists, skipping NOTICE: relation "batch_table_p1" already exists, skipping NOTICE: relation "tenk1" already exists, skipping NOTICE: relation "innertab" already exists, skipping @@ -10630,6 +10635,7 @@ NOTICE: relation "INT4_TMP" already exists, skipping NOTICE: relation "bitwise_test" already exists, skipping NOTICE: relation "agg_t1" already exists, skipping NOTICE: relation "INT8_TBL" already exists, skipping +NOTICE: relation "INT8_TMP" already exists, skipping NOTICE: relation "hpart13" already exists, skipping IMPORT FOREIGN SCHEMA nonesuch FROM SERVER griddb_svr INTO notthere; ERROR: schema "notthere" does not exist diff --git a/expected/10.17/insert.out b/expected/10.18/insert.out similarity index 100% rename from expected/10.17/insert.out rename to expected/10.18/insert.out diff --git a/expected/10.17/int4.out b/expected/10.18/int4.out similarity index 100% rename from expected/10.17/int4.out rename to expected/10.18/int4.out diff --git a/expected/10.17/int8.out b/expected/10.18/int8.out similarity index 100% rename from expected/10.17/int8.out rename to expected/10.18/int8.out diff --git a/expected/10.17/join.out b/expected/10.18/join.out similarity index 100% rename from expected/10.17/join.out rename to expected/10.18/join.out diff --git a/expected/10.17/limit.out b/expected/10.18/limit.out similarity index 100% rename from expected/10.17/limit.out rename to expected/10.18/limit.out diff --git a/expected/10.17/numeric.out b/expected/10.18/numeric.out similarity index 100% rename from expected/10.17/numeric.out rename to expected/10.18/numeric.out diff --git a/expected/10.17/prepare.out b/expected/10.18/prepare.out similarity index 100% rename from expected/10.17/prepare.out rename to expected/10.18/prepare.out diff --git a/expected/10.17/select.out b/expected/10.18/select.out similarity index 100% rename from expected/10.17/select.out rename to expected/10.18/select.out diff --git a/expected/10.17/select_having.out b/expected/10.18/select_having.out similarity index 100% rename from expected/10.17/select_having.out rename to expected/10.18/select_having.out diff --git a/expected/10.17/selectfunc.out b/expected/10.18/selectfunc.out similarity index 100% rename from expected/10.17/selectfunc.out rename to expected/10.18/selectfunc.out diff --git a/expected/10.17/update.out b/expected/10.18/update.out similarity index 100% rename from expected/10.17/update.out rename to expected/10.18/update.out diff --git a/expected/11.12/aggregates.out b/expected/11.13/aggregates.out similarity index 100% rename from expected/11.12/aggregates.out rename to expected/11.13/aggregates.out diff --git a/expected/11.12/float4.out b/expected/11.13/float4.out similarity index 100% rename from expected/11.12/float4.out rename to expected/11.13/float4.out diff --git a/expected/11.12/float8.out b/expected/11.13/float8.out similarity index 100% rename from expected/11.12/float8.out rename to expected/11.13/float8.out diff --git a/expected/11.12/griddb_fdw.out b/expected/11.13/griddb_fdw.out similarity index 99% rename from expected/11.12/griddb_fdw.out rename to expected/11.13/griddb_fdw.out index df82076..504ed02 100644 --- a/expected/11.12/griddb_fdw.out +++ b/expected/11.13/griddb_fdw.out @@ -687,14 +687,14 @@ ERROR: rowkey-column update is not supported SELECT * FROM public.griddb_fdw_version(); griddb_fdw_version -------------------- - 20100 + 20101 (1 row) --Testcase 116: SELECT griddb_fdw_version(); griddb_fdw_version -------------------- - 20100 + 20101 (1 row) --Test pushdown LIMIT...OFFSET diff --git a/expected/11.12/griddb_fdw_data_type.out b/expected/11.13/griddb_fdw_data_type.out similarity index 100% rename from expected/11.12/griddb_fdw_data_type.out rename to expected/11.13/griddb_fdw_data_type.out diff --git a/expected/11.12/griddb_fdw_post.out b/expected/11.13/griddb_fdw_post.out similarity index 99% rename from expected/11.12/griddb_fdw_post.out rename to expected/11.13/griddb_fdw_post.out index d2495ce..08eeb2c 100644 --- a/expected/11.12/griddb_fdw_post.out +++ b/expected/11.13/griddb_fdw_post.out @@ -9866,9 +9866,11 @@ FROM SERVER griddb_svr INTO import_grid4; import_grid4 | FLOAT8_TBL | griddb_svr | | import_grid4 | FLOAT8_TMP | griddb_svr | | import_grid4 | INT2_TBL | griddb_svr | | + import_grid4 | INT2_TMP | griddb_svr | | import_grid4 | INT4_TBL | griddb_svr | | import_grid4 | INT4_TMP | griddb_svr | | import_grid4 | INT8_TBL | griddb_svr | | + import_grid4 | INT8_TMP | griddb_svr | | import_grid4 | J1_TBL | griddb_svr | | import_grid4 | J2_TBL | griddb_svr | | import_grid4 | T0 | griddb_svr | | @@ -10126,7 +10128,7 @@ FROM SERVER griddb_svr INTO import_grid4; import_grid4 | zt1 | griddb_svr | | import_grid4 | zt2 | griddb_svr | | import_grid4 | zt3 | griddb_svr | | -(264 rows) +(266 rows) -- Assorted error cases IMPORT FOREIGN SCHEMA griddb_schema FROM SERVER griddb_svr INTO import_grid4; @@ -10319,6 +10321,7 @@ NOTICE: relation "nt3" already exists, skipping NOTICE: relation "agg_t6" already exists, skipping NOTICE: relation "loc2" already exists, skipping NOTICE: relation "INT2_TBL" already exists, skipping +NOTICE: relation "INT2_TMP" already exists, skipping NOTICE: relation "batch_table_p1" already exists, skipping NOTICE: relation "tenk1" already exists, skipping NOTICE: relation "innertab" already exists, skipping @@ -10393,6 +10396,7 @@ NOTICE: relation "INT4_TMP" already exists, skipping NOTICE: relation "bitwise_test" already exists, skipping NOTICE: relation "agg_t1" already exists, skipping NOTICE: relation "INT8_TBL" already exists, skipping +NOTICE: relation "INT8_TMP" already exists, skipping NOTICE: relation "hpart13" already exists, skipping IMPORT FOREIGN SCHEMA nonesuch FROM SERVER griddb_svr INTO import_grid4; -- same as 'public' NOTICE: relation "aggtest" already exists, skipping @@ -10585,6 +10589,7 @@ NOTICE: relation "nt3" already exists, skipping NOTICE: relation "agg_t6" already exists, skipping NOTICE: relation "loc2" already exists, skipping NOTICE: relation "INT2_TBL" already exists, skipping +NOTICE: relation "INT2_TMP" already exists, skipping NOTICE: relation "batch_table_p1" already exists, skipping NOTICE: relation "tenk1" already exists, skipping NOTICE: relation "innertab" already exists, skipping @@ -10659,6 +10664,7 @@ NOTICE: relation "INT4_TMP" already exists, skipping NOTICE: relation "bitwise_test" already exists, skipping NOTICE: relation "agg_t1" already exists, skipping NOTICE: relation "INT8_TBL" already exists, skipping +NOTICE: relation "INT8_TMP" already exists, skipping NOTICE: relation "hpart13" already exists, skipping IMPORT FOREIGN SCHEMA nonesuch FROM SERVER griddb_svr INTO notthere; ERROR: schema "notthere" does not exist diff --git a/expected/11.12/insert.out b/expected/11.13/insert.out similarity index 100% rename from expected/11.12/insert.out rename to expected/11.13/insert.out diff --git a/expected/11.12/int4.out b/expected/11.13/int4.out similarity index 100% rename from expected/11.12/int4.out rename to expected/11.13/int4.out diff --git a/expected/11.12/int8.out b/expected/11.13/int8.out similarity index 100% rename from expected/11.12/int8.out rename to expected/11.13/int8.out diff --git a/expected/11.12/join.out b/expected/11.13/join.out similarity index 100% rename from expected/11.12/join.out rename to expected/11.13/join.out diff --git a/expected/11.12/limit.out b/expected/11.13/limit.out similarity index 100% rename from expected/11.12/limit.out rename to expected/11.13/limit.out diff --git a/expected/11.12/numeric.out b/expected/11.13/numeric.out similarity index 100% rename from expected/11.12/numeric.out rename to expected/11.13/numeric.out diff --git a/expected/11.12/prepare.out b/expected/11.13/prepare.out similarity index 100% rename from expected/11.12/prepare.out rename to expected/11.13/prepare.out diff --git a/expected/11.12/select.out b/expected/11.13/select.out similarity index 100% rename from expected/11.12/select.out rename to expected/11.13/select.out diff --git a/expected/11.12/select_having.out b/expected/11.13/select_having.out similarity index 100% rename from expected/11.12/select_having.out rename to expected/11.13/select_having.out diff --git a/expected/11.12/selectfunc.out b/expected/11.13/selectfunc.out similarity index 100% rename from expected/11.12/selectfunc.out rename to expected/11.13/selectfunc.out diff --git a/expected/11.12/update.out b/expected/11.13/update.out similarity index 100% rename from expected/11.12/update.out rename to expected/11.13/update.out diff --git a/expected/12.7/aggregates.out b/expected/12.8/aggregates.out similarity index 100% rename from expected/12.7/aggregates.out rename to expected/12.8/aggregates.out diff --git a/expected/12.7/float4.out b/expected/12.8/float4.out similarity index 100% rename from expected/12.7/float4.out rename to expected/12.8/float4.out diff --git a/expected/12.7/float8.out b/expected/12.8/float8.out similarity index 100% rename from expected/12.7/float8.out rename to expected/12.8/float8.out diff --git a/expected/12.7/griddb_fdw.out b/expected/12.8/griddb_fdw.out similarity index 99% rename from expected/12.7/griddb_fdw.out rename to expected/12.8/griddb_fdw.out index 2e6861b..d09479a 100644 --- a/expected/12.7/griddb_fdw.out +++ b/expected/12.8/griddb_fdw.out @@ -687,14 +687,14 @@ ERROR: rowkey-column update is not supported SELECT * FROM public.griddb_fdw_version(); griddb_fdw_version -------------------- - 20100 + 20101 (1 row) --Testcase 116: SELECT griddb_fdw_version(); griddb_fdw_version -------------------- - 20100 + 20101 (1 row) --Test pushdown LIMIT...OFFSET diff --git a/expected/12.7/griddb_fdw_data_type.out b/expected/12.8/griddb_fdw_data_type.out similarity index 100% rename from expected/12.7/griddb_fdw_data_type.out rename to expected/12.8/griddb_fdw_data_type.out diff --git a/expected/12.7/griddb_fdw_post.out b/expected/12.8/griddb_fdw_post.out similarity index 99% rename from expected/12.7/griddb_fdw_post.out rename to expected/12.8/griddb_fdw_post.out index 8744207..827f0b0 100644 --- a/expected/12.7/griddb_fdw_post.out +++ b/expected/12.8/griddb_fdw_post.out @@ -9889,9 +9889,11 @@ FROM SERVER griddb_svr INTO import_grid4; import_grid4 | FLOAT8_TBL | griddb_svr | | import_grid4 | FLOAT8_TMP | griddb_svr | | import_grid4 | INT2_TBL | griddb_svr | | + import_grid4 | INT2_TMP | griddb_svr | | import_grid4 | INT4_TBL | griddb_svr | | import_grid4 | INT4_TMP | griddb_svr | | import_grid4 | INT8_TBL | griddb_svr | | + import_grid4 | INT8_TMP | griddb_svr | | import_grid4 | J1_TBL | griddb_svr | | import_grid4 | J2_TBL | griddb_svr | | import_grid4 | T0 | griddb_svr | | @@ -10149,7 +10151,7 @@ FROM SERVER griddb_svr INTO import_grid4; import_grid4 | zt1 | griddb_svr | | import_grid4 | zt2 | griddb_svr | | import_grid4 | zt3 | griddb_svr | | -(264 rows) +(266 rows) -- Assorted error cases IMPORT FOREIGN SCHEMA griddb_schema FROM SERVER griddb_svr INTO import_grid4; @@ -10342,6 +10344,7 @@ NOTICE: relation "nt3" already exists, skipping NOTICE: relation "agg_t6" already exists, skipping NOTICE: relation "loc2" already exists, skipping NOTICE: relation "INT2_TBL" already exists, skipping +NOTICE: relation "INT2_TMP" already exists, skipping NOTICE: relation "batch_table_p1" already exists, skipping NOTICE: relation "tenk1" already exists, skipping NOTICE: relation "innertab" already exists, skipping @@ -10416,6 +10419,7 @@ NOTICE: relation "INT4_TMP" already exists, skipping NOTICE: relation "bitwise_test" already exists, skipping NOTICE: relation "agg_t1" already exists, skipping NOTICE: relation "INT8_TBL" already exists, skipping +NOTICE: relation "INT8_TMP" already exists, skipping NOTICE: relation "hpart13" already exists, skipping IMPORT FOREIGN SCHEMA nonesuch FROM SERVER griddb_svr INTO import_grid4; -- same as 'public' NOTICE: relation "aggtest" already exists, skipping @@ -10608,6 +10612,7 @@ NOTICE: relation "nt3" already exists, skipping NOTICE: relation "agg_t6" already exists, skipping NOTICE: relation "loc2" already exists, skipping NOTICE: relation "INT2_TBL" already exists, skipping +NOTICE: relation "INT2_TMP" already exists, skipping NOTICE: relation "batch_table_p1" already exists, skipping NOTICE: relation "tenk1" already exists, skipping NOTICE: relation "innertab" already exists, skipping @@ -10682,6 +10687,7 @@ NOTICE: relation "INT4_TMP" already exists, skipping NOTICE: relation "bitwise_test" already exists, skipping NOTICE: relation "agg_t1" already exists, skipping NOTICE: relation "INT8_TBL" already exists, skipping +NOTICE: relation "INT8_TMP" already exists, skipping NOTICE: relation "hpart13" already exists, skipping IMPORT FOREIGN SCHEMA nonesuch FROM SERVER griddb_svr INTO notthere; ERROR: schema "notthere" does not exist diff --git a/expected/12.7/insert.out b/expected/12.8/insert.out similarity index 100% rename from expected/12.7/insert.out rename to expected/12.8/insert.out diff --git a/expected/12.7/int4.out b/expected/12.8/int4.out similarity index 100% rename from expected/12.7/int4.out rename to expected/12.8/int4.out diff --git a/expected/12.7/int8.out b/expected/12.8/int8.out similarity index 100% rename from expected/12.7/int8.out rename to expected/12.8/int8.out diff --git a/expected/12.7/join.out b/expected/12.8/join.out similarity index 100% rename from expected/12.7/join.out rename to expected/12.8/join.out diff --git a/expected/12.7/limit.out b/expected/12.8/limit.out similarity index 100% rename from expected/12.7/limit.out rename to expected/12.8/limit.out diff --git a/expected/12.7/numeric.out b/expected/12.8/numeric.out similarity index 100% rename from expected/12.7/numeric.out rename to expected/12.8/numeric.out diff --git a/expected/12.7/prepare.out b/expected/12.8/prepare.out similarity index 100% rename from expected/12.7/prepare.out rename to expected/12.8/prepare.out diff --git a/expected/12.7/select.out b/expected/12.8/select.out similarity index 100% rename from expected/12.7/select.out rename to expected/12.8/select.out diff --git a/expected/12.7/select_having.out b/expected/12.8/select_having.out similarity index 100% rename from expected/12.7/select_having.out rename to expected/12.8/select_having.out diff --git a/expected/12.7/selectfunc.out b/expected/12.8/selectfunc.out similarity index 100% rename from expected/12.7/selectfunc.out rename to expected/12.8/selectfunc.out diff --git a/expected/12.7/update.out b/expected/12.8/update.out similarity index 100% rename from expected/12.7/update.out rename to expected/12.8/update.out diff --git a/expected/13.3/aggregates.out b/expected/13.4/aggregates.out similarity index 100% rename from expected/13.3/aggregates.out rename to expected/13.4/aggregates.out diff --git a/expected/13.3/float4.out b/expected/13.4/float4.out similarity index 100% rename from expected/13.3/float4.out rename to expected/13.4/float4.out diff --git a/expected/13.3/float8.out b/expected/13.4/float8.out similarity index 100% rename from expected/13.3/float8.out rename to expected/13.4/float8.out diff --git a/expected/13.3/griddb_fdw.out b/expected/13.4/griddb_fdw.out similarity index 99% rename from expected/13.3/griddb_fdw.out rename to expected/13.4/griddb_fdw.out index 2e6861b..d09479a 100644 --- a/expected/13.3/griddb_fdw.out +++ b/expected/13.4/griddb_fdw.out @@ -687,14 +687,14 @@ ERROR: rowkey-column update is not supported SELECT * FROM public.griddb_fdw_version(); griddb_fdw_version -------------------- - 20100 + 20101 (1 row) --Testcase 116: SELECT griddb_fdw_version(); griddb_fdw_version -------------------- - 20100 + 20101 (1 row) --Test pushdown LIMIT...OFFSET diff --git a/expected/13.3/griddb_fdw_data_type.out b/expected/13.4/griddb_fdw_data_type.out similarity index 100% rename from expected/13.3/griddb_fdw_data_type.out rename to expected/13.4/griddb_fdw_data_type.out diff --git a/expected/13.3/griddb_fdw_post.out b/expected/13.4/griddb_fdw_post.out similarity index 99% rename from expected/13.3/griddb_fdw_post.out rename to expected/13.4/griddb_fdw_post.out index d194770..331dac1 100644 --- a/expected/13.3/griddb_fdw_post.out +++ b/expected/13.4/griddb_fdw_post.out @@ -9895,9 +9895,11 @@ FROM SERVER griddb_svr INTO import_grid4; import_grid4 | FLOAT8_TBL | griddb_svr | | import_grid4 | FLOAT8_TMP | griddb_svr | | import_grid4 | INT2_TBL | griddb_svr | | + import_grid4 | INT2_TMP | griddb_svr | | import_grid4 | INT4_TBL | griddb_svr | | import_grid4 | INT4_TMP | griddb_svr | | import_grid4 | INT8_TBL | griddb_svr | | + import_grid4 | INT8_TMP | griddb_svr | | import_grid4 | J1_TBL | griddb_svr | | import_grid4 | J2_TBL | griddb_svr | | import_grid4 | T0 | griddb_svr | | @@ -10155,7 +10157,7 @@ FROM SERVER griddb_svr INTO import_grid4; import_grid4 | zt1 | griddb_svr | | import_grid4 | zt2 | griddb_svr | | import_grid4 | zt3 | griddb_svr | | -(264 rows) +(266 rows) -- Assorted error cases IMPORT FOREIGN SCHEMA griddb_schema FROM SERVER griddb_svr INTO import_grid4; @@ -10348,6 +10350,7 @@ NOTICE: relation "nt3" already exists, skipping NOTICE: relation "agg_t6" already exists, skipping NOTICE: relation "loc2" already exists, skipping NOTICE: relation "INT2_TBL" already exists, skipping +NOTICE: relation "INT2_TMP" already exists, skipping NOTICE: relation "batch_table_p1" already exists, skipping NOTICE: relation "tenk1" already exists, skipping NOTICE: relation "innertab" already exists, skipping @@ -10422,6 +10425,7 @@ NOTICE: relation "INT4_TMP" already exists, skipping NOTICE: relation "bitwise_test" already exists, skipping NOTICE: relation "agg_t1" already exists, skipping NOTICE: relation "INT8_TBL" already exists, skipping +NOTICE: relation "INT8_TMP" already exists, skipping NOTICE: relation "hpart13" already exists, skipping IMPORT FOREIGN SCHEMA nonesuch FROM SERVER griddb_svr INTO import_grid4; -- same as 'public' NOTICE: relation "aggtest" already exists, skipping @@ -10614,6 +10618,7 @@ NOTICE: relation "nt3" already exists, skipping NOTICE: relation "agg_t6" already exists, skipping NOTICE: relation "loc2" already exists, skipping NOTICE: relation "INT2_TBL" already exists, skipping +NOTICE: relation "INT2_TMP" already exists, skipping NOTICE: relation "batch_table_p1" already exists, skipping NOTICE: relation "tenk1" already exists, skipping NOTICE: relation "innertab" already exists, skipping @@ -10688,6 +10693,7 @@ NOTICE: relation "INT4_TMP" already exists, skipping NOTICE: relation "bitwise_test" already exists, skipping NOTICE: relation "agg_t1" already exists, skipping NOTICE: relation "INT8_TBL" already exists, skipping +NOTICE: relation "INT8_TMP" already exists, skipping NOTICE: relation "hpart13" already exists, skipping IMPORT FOREIGN SCHEMA nonesuch FROM SERVER griddb_svr INTO notthere; ERROR: schema "notthere" does not exist diff --git a/expected/13.3/insert.out b/expected/13.4/insert.out similarity index 100% rename from expected/13.3/insert.out rename to expected/13.4/insert.out diff --git a/expected/13.3/int4.out b/expected/13.4/int4.out similarity index 100% rename from expected/13.3/int4.out rename to expected/13.4/int4.out diff --git a/expected/13.3/int8.out b/expected/13.4/int8.out similarity index 100% rename from expected/13.3/int8.out rename to expected/13.4/int8.out diff --git a/expected/13.3/join.out b/expected/13.4/join.out similarity index 100% rename from expected/13.3/join.out rename to expected/13.4/join.out diff --git a/expected/13.3/limit.out b/expected/13.4/limit.out similarity index 100% rename from expected/13.3/limit.out rename to expected/13.4/limit.out diff --git a/expected/13.3/numeric.out b/expected/13.4/numeric.out similarity index 100% rename from expected/13.3/numeric.out rename to expected/13.4/numeric.out diff --git a/expected/13.3/prepare.out b/expected/13.4/prepare.out similarity index 100% rename from expected/13.3/prepare.out rename to expected/13.4/prepare.out diff --git a/expected/13.3/select.out b/expected/13.4/select.out similarity index 100% rename from expected/13.3/select.out rename to expected/13.4/select.out diff --git a/expected/13.3/select_having.out b/expected/13.4/select_having.out similarity index 100% rename from expected/13.3/select_having.out rename to expected/13.4/select_having.out diff --git a/expected/13.3/selectfunc.out b/expected/13.4/selectfunc.out similarity index 100% rename from expected/13.3/selectfunc.out rename to expected/13.4/selectfunc.out diff --git a/expected/13.3/update.out b/expected/13.4/update.out similarity index 100% rename from expected/13.3/update.out rename to expected/13.4/update.out diff --git a/expected/14beta2/aggregates.out b/expected/14.0/aggregates.out similarity index 98% rename from expected/14beta2/aggregates.out rename to expected/14.0/aggregates.out index 5f75158..65d18ca 100644 --- a/expected/14beta2/aggregates.out +++ b/expected/14.0/aggregates.out @@ -2405,6 +2405,42 @@ select aggfns(distinct a,b,c order by a,c using ~<~,b) filter (where a > 1) from (1 row) rollback; +-- check handling of bare boolean Var in FILTER +--Testcase 583: +select max(0) filter (where b1) from bool_test; + max +----- + 0 +(1 row) + +--Testcase 584: +select (select max(0) filter (where b1)) from bool_test; + max +----- + 0 +(1 row) + +-- check for correct detection of nested-aggregate errors in FILTER +--Testcase 585: +select max(unique1) filter (where sum(ten) > 0) from tenk1; +ERROR: aggregate functions are not allowed in FILTER +LINE 1: select max(unique1) filter (where sum(ten) > 0) from tenk1; + ^ +--Testcase 586: +select (select max(unique1) filter (where sum(ten) > 0) from int8_tbl) from tenk1; +ERROR: aggregate function calls cannot be nested +LINE 1: select (select max(unique1) filter (where sum(ten) > 0) from... + ^ +--Testcase 587: +select max(unique1) filter (where bool_or(ten > 0)) from tenk1; +ERROR: aggregate functions are not allowed in FILTER +LINE 1: select max(unique1) filter (where bool_or(ten > 0)) from ten... + ^ +--Testcase 588: +select (select max(unique1) filter (where bool_or(ten > 0)) from int8_tbl) from tenk1; +ERROR: aggregate function calls cannot be nested +LINE 1: select (select max(unique1) filter (where bool_or(ten > 0)) ... + ^ -- ordered-set aggregates begin; --Testcase 377: @@ -3409,7 +3445,7 @@ rollback; -- does not lead to array overflow due to unexpected duplicate hash keys -- see CAFeeJoKKu0u+A_A9R9316djW-YW3-+Gtgvy3ju655qRHR3jtdA@mail.gmail.com --Testcase 527: -set enable_resultcache to off; +set enable_memoize to off; --Testcase 528: explain (costs off) select 1 from tenk1 @@ -3426,7 +3462,7 @@ explain (costs off) (7 rows) --Testcase 529: -reset enable_resultcache; +reset enable_memoize; -- -- Hash Aggregation Spill tests -- diff --git a/expected/14beta2/float4.out b/expected/14.0/float4.out similarity index 100% rename from expected/14beta2/float4.out rename to expected/14.0/float4.out diff --git a/expected/14beta2/float8.out b/expected/14.0/float8.out similarity index 100% rename from expected/14beta2/float8.out rename to expected/14.0/float8.out diff --git a/expected/14beta2/griddb_fdw.out b/expected/14.0/griddb_fdw.out similarity index 99% rename from expected/14beta2/griddb_fdw.out rename to expected/14.0/griddb_fdw.out index d2e4cff..b1e49ad 100644 --- a/expected/14beta2/griddb_fdw.out +++ b/expected/14.0/griddb_fdw.out @@ -688,14 +688,14 @@ ERROR: rowkey-column update is not supported SELECT * FROM public.griddb_fdw_version(); griddb_fdw_version -------------------- - 20100 + 20101 (1 row) --Testcase 111: SELECT griddb_fdw_version(); griddb_fdw_version -------------------- - 20100 + 20101 (1 row) --Test pushdown LIMIT...OFFSET @@ -880,7 +880,7 @@ WHERE t1.ten = ss2.id; -> Foreign Scan on public.onek t2 Output: num.id, t2.two Remote SQL: SELECT * FROM onek LIMIT 1 OFFSET 5 - -> Result Cache + -> Memoize Output: ((num.id)), (t2.two) Cache Key: (num.id), t2.two -> Foreign Scan on public.onek t3 diff --git a/expected/14beta2/griddb_fdw_data_type.out b/expected/14.0/griddb_fdw_data_type.out similarity index 100% rename from expected/14beta2/griddb_fdw_data_type.out rename to expected/14.0/griddb_fdw_data_type.out diff --git a/expected/14beta2/griddb_fdw_post.out b/expected/14.0/griddb_fdw_post.out similarity index 99% rename from expected/14beta2/griddb_fdw_post.out rename to expected/14.0/griddb_fdw_post.out index e659cb3..f289ba6 100644 --- a/expected/14beta2/griddb_fdw_post.out +++ b/expected/14.0/griddb_fdw_post.out @@ -5132,13 +5132,15 @@ DROP TABLE reind_fdw_parent; --Testcase 395: ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE int; --Testcase 396: -SELECT * FROM ft1 WHERE c1 = 1; -- ERROR +SELECT * FROM ft1 ftx(x1,x2,x3,x4,x5,x6,x7,x8) WHERE x1 = 1; -- ERROR ERROR: Type conversion mismatch --Testcase 397: -SELECT ft1.c1, ft2.c2, ft1.c8 FROM ft1, ft2 WHERE ft1.c1 = ft2.c1 AND ft1.c1 = 1; -- ERROR +SELECT ftx.x1, ft2.c2, ftx.x8 FROM ft1 ftx(x1,x2,x3,x4,x5,x6,x7,x8), ft2 + WHERE ftx.x1 = ft2.c1 AND ftx.x1 = 1; -- ERROR ERROR: Type conversion mismatch --Testcase 398: -SELECT ft1.c1, ft2.c2, ft1 FROM ft1, ft2 WHERE ft1.c1 = ft2.c1 AND ft1.c1 = 1; -- ERROR +SELECT ftx.x1, ft2.c2, ftx FROM ft1 ftx(x1,x2,x3,x4,x5,x6,x7,x8), ft2 + WHERE ftx.x1 = ft2.c1 AND ftx.x1 = 1; -- ERROR ERROR: Type conversion mismatch --Testcase 399: SELECT sum(c2), array_agg(c8) FROM ft1 GROUP BY c8; -- ERROR @@ -7640,7 +7642,14 @@ select f1, f2 from rem1; -- =================================================================== -- test generated columns -- =================================================================== ---create table gloc1 (a int, b int); +-- griddb does not support generated column, so data will be generated +-- at FDW layer before inserted to remote table. +--Testcase 1103: +create foreign table gloc1 ( + id serial OPTIONS (rowkey 'true'), + a int, + b int) + server griddb_svr; --alter table gloc1 set (autovacuum_enabled = 'false'); --Testcase 547: create foreign table grem1 ( @@ -7648,10 +7657,39 @@ create foreign table grem1 ( a int, b int generated always as (a * 2) stored) server griddb_svr options(table_name 'gloc1'); +--Testcase 1075: +explain (verbose, costs off) +insert into grem1 (a) values (1), (2); + QUERY PLAN +-------------------------------------------------------------------------------------- + Insert on public.grem1 + -> Values Scan on "*VALUES*" + Output: nextval('grem1_id_seq'::regclass), "*VALUES*".column1, NULL::integer +(3 rows) + --Testcase 548: insert into grem1 (a) values (1), (2); +--Testcase 1076: +explain (verbose, costs off) +update grem1 set a = 22 where a = 2; + QUERY PLAN +----------------------------------------------------------- + Update on public.grem1 + -> Foreign Scan on public.grem1 + Output: 22, id, grem1.* + Remote SQL: SELECT * FROM gloc1 WHERE ((a = 2)) +(4 rows) + --Testcase 549: update grem1 set a = 22 where a = 2; +--Testcase 1100: +select a,b from gloc1; + a | b +----+---- + 1 | 2 + 22 | 44 +(2 rows) + --Testcase 550: select a, b from grem1; a | b @@ -7660,6 +7698,64 @@ select a, b from grem1; 22 | 44 (2 rows) +--Testcase 1077: +delete from grem1; +-- test copy from +copy grem1(a) from stdin; +--Testcase 1101: +select a,b from gloc1; + a | b +---+--- + 1 | 2 + 2 | 4 +(2 rows) + +--Testcase 1078: +select a, b from grem1; + a | b +---+--- + 1 | 2 + 2 | 4 +(2 rows) + +--Testcase 1079: +delete from grem1; +-- test batch insert +--Testcase 1080: +alter server griddb_svr options (add batch_size '10'); +--Testcase 1081: +explain (verbose, costs off) +insert into grem1 (a) values (1), (2); + QUERY PLAN +-------------------------------------------------------------------------------------- + Insert on public.grem1 + Batch Size: 10 + -> Values Scan on "*VALUES*" + Output: nextval('grem1_id_seq'::regclass), "*VALUES*".column1, NULL::integer +(4 rows) + +--Testcase 1082: +insert into grem1 (a) values (1), (2); +--Testcase 1102: +select a, b from gloc1; + a | b +---+--- + 1 | 2 + 2 | 4 +(2 rows) + +--Testcase 1083: +select a, b from grem1; + a | b +---+--- + 1 | 2 + 2 | 4 +(2 rows) + +--Testcase 1084: +delete from grem1; +--Testcase 1085: +alter server griddb_svr options (drop batch_size); -- =================================================================== -- test local triggers -- =================================================================== @@ -8095,6 +8191,29 @@ DROP TRIGGER trig_row_after ON rem1; --Testcase 633: DROP TRIGGER trig_local_before ON rem1; -- Test direct foreign table modification functionality +-- GridDB does not support direct modification +--Testcase 1086: +EXPLAIN (verbose, costs off) +DELETE FROM rem1; -- can't be pushed down + QUERY PLAN +-------------------------------------------- + Delete on public.rem1 + -> Foreign Scan on public.rem1 + Output: id + Remote SQL: SELECT * FROM loct13 +(4 rows) + +--Testcase 1087: +EXPLAIN (verbose, costs off) +DELETE FROM rem1 WHERE false; -- currently can't be pushed down + QUERY PLAN +-------------------------------- + Delete on public.rem1 + -> Result + Output: id + One-Time Filter: false +(4 rows) + -- Test with statement-level triggers --Testcase 634: CREATE TRIGGER trig_stmt_before @@ -9485,6 +9604,7 @@ update utrtest set a = 3 from (values (2), (3)) s(x) where a = s.x; Output: "*VALUES*".*, "*VALUES*".column1 (16 rows) +--Testcase 1088: update utrtest set a = 3 from (values (2), (3)) s(x) where a = s.x; -- ERROR ERROR: cannot route tuples into foreign table to be updated "remp" --Testcase 851: @@ -10007,9 +10127,11 @@ FROM SERVER griddb_svr INTO import_grid4; import_grid4 | FLOAT8_TBL | griddb_svr | | import_grid4 | FLOAT8_TMP | griddb_svr | | import_grid4 | INT2_TBL | griddb_svr | | + import_grid4 | INT2_TMP | griddb_svr | | import_grid4 | INT4_TBL | griddb_svr | | import_grid4 | INT4_TMP | griddb_svr | | import_grid4 | INT8_TBL | griddb_svr | | + import_grid4 | INT8_TMP | griddb_svr | | import_grid4 | J1_TBL | griddb_svr | | import_grid4 | J2_TBL | griddb_svr | | import_grid4 | T0 | griddb_svr | | @@ -10267,7 +10389,7 @@ FROM SERVER griddb_svr INTO import_grid4; import_grid4 | zt1 | griddb_svr | | import_grid4 | zt2 | griddb_svr | | import_grid4 | zt3 | griddb_svr | | -(264 rows) +(266 rows) -- Assorted error cases IMPORT FOREIGN SCHEMA griddb_schema FROM SERVER griddb_svr INTO import_grid4; @@ -10460,6 +10582,7 @@ NOTICE: relation "nt3" already exists, skipping NOTICE: relation "agg_t6" already exists, skipping NOTICE: relation "loc2" already exists, skipping NOTICE: relation "INT2_TBL" already exists, skipping +NOTICE: relation "INT2_TMP" already exists, skipping NOTICE: relation "batch_table_p1" already exists, skipping NOTICE: relation "tenk1" already exists, skipping NOTICE: relation "innertab" already exists, skipping @@ -10534,6 +10657,7 @@ NOTICE: relation "INT4_TMP" already exists, skipping NOTICE: relation "bitwise_test" already exists, skipping NOTICE: relation "agg_t1" already exists, skipping NOTICE: relation "INT8_TBL" already exists, skipping +NOTICE: relation "INT8_TMP" already exists, skipping NOTICE: relation "hpart13" already exists, skipping IMPORT FOREIGN SCHEMA nonesuch FROM SERVER griddb_svr INTO import_grid4; -- same as 'public' NOTICE: relation "aggtest" already exists, skipping @@ -10726,6 +10850,7 @@ NOTICE: relation "nt3" already exists, skipping NOTICE: relation "agg_t6" already exists, skipping NOTICE: relation "loc2" already exists, skipping NOTICE: relation "INT2_TBL" already exists, skipping +NOTICE: relation "INT2_TMP" already exists, skipping NOTICE: relation "batch_table_p1" already exists, skipping NOTICE: relation "tenk1" already exists, skipping NOTICE: relation "innertab" already exists, skipping @@ -10800,6 +10925,7 @@ NOTICE: relation "INT4_TMP" already exists, skipping NOTICE: relation "bitwise_test" already exists, skipping NOTICE: relation "agg_t1" already exists, skipping NOTICE: relation "INT8_TBL" already exists, skipping +NOTICE: relation "INT8_TMP" already exists, skipping NOTICE: relation "hpart13" already exists, skipping IMPORT FOREIGN SCHEMA nonesuch FROM SERVER griddb_svr INTO notthere; ERROR: schema "notthere" does not exist @@ -11811,13 +11937,21 @@ SELECT COUNT(*) FROM ftable; -- griddb_fdw can not delete the large number of rows in one query -- because of the transaction timeout, so we delete small parts -- from foreign table +--Testcase 1089: DELETE FROM ftable WHERE x < 10000; +--Testcase 1090: DELETE FROM ftable WHERE x < 20000; +--Testcase 1091: DELETE FROM ftable WHERE x < 30000; +--Testcase 1092: DELETE FROM ftable WHERE x < 40000; +--Testcase 1093: DELETE FROM ftable WHERE x < 50000; +--Testcase 1094: DELETE FROM ftable WHERE x < 60000; +--Testcase 1095: DELETE FROM ftable WHERE x < 70000; +--Testcase 1096: DELETE FROM ftable; --Testcase 1043: DROP FOREIGN TABLE ftable; @@ -12064,6 +12198,27 @@ DROP TABLE batch_table, batch_cp_upd_test CASCADE; -- DROP TABLE join_tbl; -- ALTER SERVER griddb_svr OPTIONS (DROP async_capable); -- ALTER SERVER griddb_svr2 OPTIONS (DROP async_capable); +-- =================================================================== +-- test invalid server and foreign table options +-- =================================================================== +-- Invalid fdw_startup_cost option +--Testcase 1097: +CREATE SERVER inv_scst FOREIGN DATA WRAPPER griddb_fdw + OPTIONS(fdw_startup_cost '100$%$#$#'); +ERROR: griddb_fdw: invalid value for floating point option "fdw_startup_cost": 100$%$#$# +-- Invalid fdw_tuple_cost option +--Testcase 1098: +CREATE SERVER inv_scst FOREIGN DATA WRAPPER griddb_fdw + OPTIONS(fdw_tuple_cost '100$%$#$#'); +ERROR: griddb_fdw: invalid value for floating point option "fdw_tuple_cost": 100$%$#$# +-- Invalid fetch_size option +--CREATE FOREIGN TABLE inv_fsz (c1 int ) +-- SERVER griddb_svr OPTIONS (fetch_size '100$%$#$#'); +-- Invalid batch_size option +--Testcase 1099: +CREATE FOREIGN TABLE inv_bsz (c1 int ) + SERVER griddb_svr OPTIONS (batch_size '100$%$#$#'); +ERROR: griddb_fdw: invalid value for integer option "batch_size": 100$%$#$# -- Drop all foreign tables --Testcase 1063: DROP USER MAPPING FOR public SERVER griddb_svr; @@ -12073,7 +12228,7 @@ DROP USER MAPPING FOR public SERVER griddb_svr2; DROP USER MAPPING FOR public SERVER testserver1; --Testcase 1066: DROP SERVER griddb_svr CASCADE; -NOTICE: drop cascades to 36 other objects +NOTICE: drop cascades to 37 other objects DETAIL: drop cascades to foreign table "S 1".base_tbl drop cascades to foreign table "S 1".fprt1_p2 drop cascades to foreign table "S 1".locp2 @@ -12108,6 +12263,7 @@ drop cascades to foreign table ft_empty drop cascades to foreign table loct3 drop cascades to foreign table ft3 drop cascades to foreign table rem1 +drop cascades to foreign table gloc1 drop cascades to foreign table grem1 drop cascades to foreign table rem2 --Testcase 1067: diff --git a/expected/14beta2/insert.out b/expected/14.0/insert.out similarity index 100% rename from expected/14beta2/insert.out rename to expected/14.0/insert.out diff --git a/expected/14beta2/int4.out b/expected/14.0/int4.out similarity index 100% rename from expected/14beta2/int4.out rename to expected/14.0/int4.out diff --git a/expected/14beta2/int8.out b/expected/14.0/int8.out similarity index 100% rename from expected/14beta2/int8.out rename to expected/14.0/int8.out diff --git a/expected/14beta2/join.out b/expected/14.0/join.out similarity index 99% rename from expected/14beta2/join.out rename to expected/14.0/join.out index e03c9b3..1deecde 100644 --- a/expected/14beta2/join.out +++ b/expected/14.0/join.out @@ -2756,7 +2756,7 @@ set work_mem to '64kB'; --Testcase 177: set enable_mergejoin to off; --Testcase 178: -set enable_resultcache to off; +set enable_memoize to off; --Testcase 179: explain (costs off) select count(*) from tenk1 a, tenk1 b @@ -2784,7 +2784,7 @@ reset work_mem; --Testcase 182: reset enable_mergejoin; --Testcase 183: -reset enable_resultcache; +reset enable_memoize; -- -- regression test for 8.2 bug with improper re-ordering of left joins -- @@ -3797,6 +3797,15 @@ select unique1 from tenk1, lateral f_immutable_int4(1) x where x = unique1; Foreign Scan on tenk1 (1 row) +--Testcase 704: +explain (costs off) +select unique1 from tenk1, lateral f_immutable_int4(1) x where x in (select 17); + QUERY PLAN +-------------------------- + Result + One-Time Filter: false +(2 rows) + --Testcase 291: explain (costs off) select unique1, x from tenk1 join f_immutable_int4(1) x on unique1 = x; @@ -4694,7 +4703,7 @@ where t1.f1 = ss2.f1; -> Foreign Scan on public.text_tbl t2 Output: i8.q1, t2.f1 Remote SQL: SELECT * FROM text_tbl LIMIT 1 - -> Result Cache + -> Memoize Output: ((i8.q1)), (t2.f1) Cache Key: (i8.q1), t2.f1 -> Foreign Scan on public.text_tbl t3 diff --git a/expected/14beta2/limit.out b/expected/14.0/limit.out similarity index 100% rename from expected/14beta2/limit.out rename to expected/14.0/limit.out diff --git a/expected/14beta2/numeric.out b/expected/14.0/numeric.out similarity index 96% rename from expected/14beta2/numeric.out rename to expected/14.0/numeric.out index ba93eab..d5e098f 100644 --- a/expected/14beta2/numeric.out +++ b/expected/14.0/numeric.out @@ -2017,6 +2017,97 @@ SELECT id, val::numeric(4,4) FROM fract_only; 9 | NaN (7 rows) +-- Check conversion to integers +--Testcase 1309: +CREATE FOREIGN TABLE INT8_TMP(id serial OPTIONS (rowkey 'true'), q1 int8, q2 int8) SERVER griddb_svr; +--Testcase 1310: +CREATE FOREIGN TABLE INT4_TMP(id serial OPTIONS (rowkey 'true'), a int4, b int4) SERVER griddb_svr; +--Testcase 1311: +CREATE FOREIGN TABLE INT2_TMP(id serial OPTIONS (rowkey 'true'), f1 int2) SERVER griddb_svr; +--Testcase 1312: +DELETE FROM INT8_TMP; +--Testcase 1271: +INSERT INTO INT8_TMP(q1) VALUES (-9223372036854775808.5); -- should fail +ERROR: bigint out of range +--Testcase 1313: +INSERT INTO INT8_TMP(q1) VALUES (-9223372036854775808.4); +--Testcase 1272: +SELECT q1 FROM INT8_TMP; -- ok + q1 +---------------------- + -9223372036854775808 +(1 row) + +--Testcase 1314: +DELETE FROM INT8_TMP; +--Testcase 1315: +INSERT INTO INT8_TMP(q1) VALUES (9223372036854775807.4); +--Testcase 1273: +SELECT q1 FROM INT8_TMP; -- ok + q1 +--------------------- + 9223372036854775807 +(1 row) + +--Testcase 1316: +DELETE FROM INT8_TMP; +--Testcase 1274: +INSERT INTO INT8_TMP(q1) VALUES (9223372036854775807.5); -- should fail +ERROR: bigint out of range +--Testcase 1275: +INSERT INTO INT4_TMP(a) VALUES (-2147483648.5); -- should fail +ERROR: integer out of range +--Testcase 1317: +INSERT INTO INT4_TMP(a) VALUES (-2147483648.4); +--Testcase 1276: +SELECT a FROM INT4_TMP; -- ok + a +------------- + -2147483648 +(1 row) + +--Testcase 1318: +DELETE FROM INT4_TMP; +--Testcase 1319: +INSERT INTO INT4_TMP(a) VALUES (2147483647.4); +--Testcase 1277: +SELECT a FROM INT4_TMP; -- ok + a +------------ + 2147483647 +(1 row) + +--Testcase 1278: +INSERT INTO INT4_TMP(a) VALUES (2147483647.5); -- should fail +ERROR: integer out of range +--Testcase 1279: +INSERT INTO INT2_TMP(f1) VALUES (-32768.5); -- should fail +ERROR: smallint out of range +--Testcase 1320: +DELETE FROM INT2_TMP; +--Testcase 1321: +INSERT INTO INT2_TMP(f1) VALUES (-32768.4); +--Testcase 1280: +SELECT f1 FROM INT2_TMP; -- ok + f1 +-------- + -32768 +(1 row) + +--Testcase 1322: +DELETE FROM INT2_TMP; +--Testcase 1322: +INSERT INTO INT2_TMP(f1) VALUES (32767.4); +--Testcase 1281: +SELECT f1 FROM INT2_TMP; -- ok + f1 +------- + 32767 +(1 row) + +--Testcase 1282: +INSERT INTO INT2_TMP(f1) VALUES (32767.5); -- should fail +ERROR: smallint out of range -- Check inf/nan conversion behavior --Testcase 673: DELETE FROM fract_only; @@ -2805,7 +2896,6 @@ SELECT to_char(val::numeric(210,10), '9.999EEEE') FROM num_data; -2.493e+07 (10 rows) -BEGIN; --Testcase 795: DELETE FROM v; --Testcase 796: @@ -2827,8 +2917,41 @@ FROM v; NaN | #.####### | #.####### | #.####### (7 rows) -ROLLBACK; -BEGIN; +--Testcase 1283: +DELETE FROM v; +--Testcase 1284: +INSERT INTO v(x) VALUES (-16379),(-16378),(-1234),(-789),(-45),(-5),(-4),(-3),(-2),(-1),(0), + (1),(2),(3),(4),(5),(38),(275),(2345),(45678),(131070),(131071); +--Testcase 1285: +SELECT x, + to_char(('1.2345e'||x)::numeric, '9.999EEEE') as numeric +FROM v; + x | numeric +--------+---------------- + -16379 | 1.235e-16379 + -16378 | 1.235e-16378 + -1234 | 1.235e-1234 + -789 | 1.235e-789 + -45 | 1.235e-45 + -5 | 1.235e-05 + -4 | 1.235e-04 + -3 | 1.235e-03 + -2 | 1.235e-02 + -1 | 1.235e-01 + 0 | 1.235e+00 + 1 | 1.235e+01 + 2 | 1.235e+02 + 3 | 1.235e+03 + 4 | 1.235e+04 + 5 | 1.235e+05 + 38 | 1.235e+38 + 275 | 1.235e+275 + 2345 | 1.235e+2345 + 45678 | 1.235e+45678 + 131070 | 1.235e+131070 + 131071 | 1.235e+131071 +(22 rows) + --Testcase 798: DELETE FROM v; --Testcase 799: @@ -2850,8 +2973,6 @@ FROM v; NaN | NaN | NaN | NaN (7 rows) -ROLLBACK; -BEGIN; --Testcase 801: DELETE FROM v; --Testcase 802: @@ -2873,7 +2994,8 @@ FROM v; NaN | ##.## | ##.## | ##.## (7 rows) -ROLLBACK; +--Testcase 1286: +DELETE FROM v; --Testcase 804: DELETE FROM ceil_floor_round; --Testcase 805: @@ -3165,6 +3287,17 @@ SELECT n1::numeric * n2::numeric FROM num_test_calc; 47700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 (5 rows) +--Testcase 1287: +DELETE FROM num_test_calc; +--Testcase 1288: +INSERT INTO num_test_calc(n1, n2) VALUES ((0.1 - 2e-16383), (0.1 - 3e-16383)); +--Testcase 1289: +select trim_scale(n1::numeric * n2::numeric) from num_test_calc; + trim_scale +------------ + 0.01 +(1 row) + -- -- Test some corner cases for division -- @@ -3426,6 +3559,17 @@ SELECT n1::numeric ^ n2::numeric FROM num_test_calc; 0.7678656556403084 (5 rows) +--Testcase 1290: +DELETE FROM num_test_calc; +--Testcase 1291: +INSERT INTO num_test_calc(n1, n2) VALUES (0.9999999999, (23300000000000)); +--Testcase 1292: +SELECT coalesce(nullif(n1::numeric ^ n2::numeric, 0), 0) AS rounds_to_zero FROM num_test_calc; + rounds_to_zero +---------------- + 0 +(1 row) + -- cases that used to error out --Testcase 919: DELETE FROM num_test_calc; @@ -3441,6 +3585,41 @@ SELECT n1::numeric ^ n2::numeric FROM num_test_calc; 782333637740774446257.7719390061997396 (2 rows) +--Testcase 1293: +DELETE FROM num_test_calc; +--Testcase 1294: +INSERT INTO num_test_calc(n1, n2) VALUES (0.9999999999, 70000000000000); +--Testcase 1295: +SELECT coalesce(nullif(n1::numeric ^ n2::numeric, 0), 0) AS underflows FROM num_test_calc; + underflows +------------ + 0 +(1 row) + +-- negative base to integer powers +--Testcase 1296: +DELETE FROM num_test_calc; +--Testcase 1297: +INSERT INTO num_test_calc(n1, n2) VALUES (-1.0, 2147483646); +--Testcase 1298: +INSERT INTO num_test_calc(n1, n2) VALUES (-1.0, 2147483647); +--Testcase 1299: +INSERT INTO num_test_calc(n1, n2) VALUES (-1.0, 2147483648); +--Testcase 1300: +INSERT INTO num_test_calc(n1, n2) VALUES (-1.0, 1000000000000000); +--Testcase 1301: +INSERT INTO num_test_calc(n1, n2) VALUES (-1.0, 1000000000000001); +--Testcase 1302: +SELECT (n1 ^ n2)::numeric(17,16) FROM num_test_calc; + numeric +--------------------- + 1.0000000000000000 + -1.0000000000000000 + 1.0000000000000000 + 1.0000000000000000 + -1.0000000000000000 +(5 rows) + -- -- Tests for raising to non-integer powers -- @@ -3626,6 +3805,28 @@ INSERT INTO num_input_test(n1) VALUES ('-inf'); SELECT exp(n1::numeric(71, 70)) from num_input_test; ERROR: numeric field overflow DETAIL: A field with precision 71, scale 70 cannot hold an infinite value. +--Testcase 1303: +DELETE FROM num_input_test; +--Testcase 1304: +INSERT INTO num_input_test(n1) VALUES (-5000::numeric); +--Testcase 1305: +SELECT coalesce(nullif(exp(n1::numeric), 0), 0) AS rounds_to_zero FROM num_input_test; + rounds_to_zero +---------------- + 0 +(1 row) + +--Testcase 1306: +DELETE FROM num_input_test; +--Testcase 1307: +INSERT INTO num_input_test(n1) VALUES (-10000::numeric); +--Testcase 1308: +SELECT coalesce(nullif(exp(n1::numeric), 0), 0) AS underflows FROM num_input_test; + underflows +------------ + 0 +(1 row) + -- cases that used to generate inaccurate results --Testcase 975: DELETE FROM num_input_test; @@ -4751,6 +4952,10 @@ DROP FOREIGN TABLE ceil_floor_round; --Testcase 1268: DROP USER MAPPING FOR public SERVER griddb_svr; --Testcase 1269: -DROP SERVER griddb_svr; +DROP SERVER griddb_svr CASCADE; +NOTICE: drop cascades to 3 other objects +DETAIL: drop cascades to foreign table int8_tmp +drop cascades to foreign table int4_tmp +drop cascades to foreign table int2_tmp --Testcase 1270: DROP EXTENSION griddb_fdw CASCADE; diff --git a/expected/14beta2/prepare.out b/expected/14.0/prepare.out similarity index 100% rename from expected/14beta2/prepare.out rename to expected/14.0/prepare.out diff --git a/expected/14beta2/select.out b/expected/14.0/select.out similarity index 100% rename from expected/14beta2/select.out rename to expected/14.0/select.out diff --git a/expected/14beta2/select_having.out b/expected/14.0/select_having.out similarity index 100% rename from expected/14beta2/select_having.out rename to expected/14.0/select_having.out diff --git a/expected/14beta2/selectfunc.out b/expected/14.0/selectfunc.out similarity index 100% rename from expected/14beta2/selectfunc.out rename to expected/14.0/selectfunc.out diff --git a/expected/14beta2/update.out b/expected/14.0/update.out similarity index 100% rename from expected/14beta2/update.out rename to expected/14.0/update.out diff --git a/griddb_fdw.h b/griddb_fdw.h index a0ce949..dd2780f 100644 --- a/griddb_fdw.h +++ b/griddb_fdw.h @@ -104,7 +104,7 @@ #define OPTION_TUPLE_COST "fdw_tuple_cost" #define OPTION_BATCH_SIZE "batch_size" #define OPTION_KEEP_CONN "keep_connections" -#define CODE_VERSION 20100 +#define CODE_VERSION 20101 /* Attribute number of rowkey column. 1st column is assigned rowkey in GridDB. */ #define ROWKEY_ATTNO 1 /* diff --git a/griddb_restart_service.sh b/griddb_restart_service.sh index 5d25f7e..529e656 100755 --- a/griddb_restart_service.sh +++ b/griddb_restart_service.sh @@ -1,7 +1,7 @@ #!/bin/bash # script restart griddb server -GRIDDB_HOME=/home/jenkins/src/griddb-4.6.0 +GRIDDB_HOME=$HOME/src/griddb-4.6.0 export GS_HOME=${GRIDDB_HOME} export GS_LOG=${GRIDDB_HOME}/log diff --git a/make_check_initializer/griddb_init.c b/make_check_initializer/griddb_init.c index 1c47345..025e886 100644 --- a/make_check_initializer/griddb_init.c +++ b/make_check_initializer/griddb_init.c @@ -394,7 +394,8 @@ griddb_init(const char *addr, INT4_TMP; /* For int8 */ - table_info INT8_TBL; + table_info INT8_TBL, + INT8_TMP; /* For join */ table_info J1_TBL, @@ -403,6 +404,7 @@ griddb_init(const char *addr, tenk1, tenk2, INT2_TBL, + INT2_TMP, t11, t21, t31, @@ -1266,6 +1268,14 @@ griddb_init(const char *addr, if (!GS_SUCCEEDED(ret)) goto EXIT; + ret = set_tableInfo(store, "INT8_TMP", &INT8_TMP, + 3, + "id", GS_TYPE_INTEGER, GS_TYPE_OPTION_NOT_NULL, + "q1", GS_TYPE_LONG, GS_TYPE_OPTION_NULLABLE, + "q2", GS_TYPE_LONG, GS_TYPE_OPTION_NULLABLE); + if (!GS_SUCCEEDED(ret)) + goto EXIT; + ret = set_tableInfo(store, "J1_TBL", &J1_TBL, 4, "id", GS_TYPE_INTEGER, GS_TYPE_OPTION_NOT_NULL, @@ -1339,6 +1349,13 @@ griddb_init(const char *addr, if (!GS_SUCCEEDED(ret)) goto EXIT; + ret = set_tableInfo(store, "INT2_TMP", &INT2_TMP, + 2, + "id", GS_TYPE_INTEGER, GS_TYPE_OPTION_NOT_NULL, + "f1", GS_TYPE_SHORT, GS_TYPE_OPTION_NULLABLE); + if (!GS_SUCCEEDED(ret)) + goto EXIT; + ret = set_tableInfo(store, "t11", &t11, 2, "name", GS_TYPE_STRING, GS_TYPE_OPTION_NOT_NULL, diff --git a/option.c b/option.c index 0955436..095aa3d 100644 --- a/option.c +++ b/option.c @@ -20,6 +20,7 @@ #include "miscadmin.h" #include "utils/inval.h" #include "utils/lsyscache.h" +#include "utils/guc.h" /* * Describes the valid options for objects that use this wrapper. @@ -144,7 +145,7 @@ griddb_fdw_validator(PG_FUNCTION_ARGS) ereport(ERROR, (errcode(ERRCODE_FDW_INVALID_OPTION_NAME), - errmsg("invalid option \"%s\"", def->defname), + errmsg("griddb_fdw: invalid option \"%s\"", def->defname), errhint("Valid options in this context are: %s", buf.len ? buf.data : "") )); } @@ -157,16 +158,55 @@ griddb_fdw_validator(PG_FUNCTION_ARGS) /* these accept only boolean values */ (void) defGetBoolean(def); } + else if (strcmp(def->defname, OPTION_STARTUP_COST) == 0 || + strcmp(def->defname, OPTION_TUPLE_COST) == 0) + { + /* + * These must have a floating point value greater than or equal to + * zero. + */ + char *value; + double real_val; + bool is_parsed; + + value = defGetString(def); + +#if (PG_VERSION_NUM >= 120000) + is_parsed = parse_real(value, &real_val, 0, NULL); +#else + is_parsed = parse_real(value, &real_val); +#endif + if (!is_parsed) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("griddb_fdw: invalid value for floating point option \"%s\": %s", + def->defname, value))); - if (strcmp(def->defname, OPTION_BATCH_SIZE) == 0) + if (real_val < 0) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("griddb_fdw: \"%s\" must be a floating point value greater than or equal to zero", + def->defname))); + } + else if (strcmp(def->defname, OPTION_BATCH_SIZE) == 0) { - int fetch_size; + char *value; + int int_val; + bool is_parsed; + + value = defGetString(def); + is_parsed = parse_int(value, &int_val, 0, NULL); + + if (!is_parsed) + ereport(ERROR, + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("griddb_fdw: invalid value for integer option \"%s\": %s", + def->defname, value))); - fetch_size = strtol(defGetString(def), NULL, 10); - if (fetch_size <= 0) + if (int_val <= 0) ereport(ERROR, - (errcode(ERRCODE_SYNTAX_ERROR), - errmsg("%s requires a non-negative integer value", + (errcode(ERRCODE_INVALID_PARAMETER_VALUE), + errmsg("griddb_fdw: \"%s\" must be an integer value greater than zero", def->defname))); } } diff --git a/sql/10.17/aggregates.sql b/sql/10.18/aggregates.sql similarity index 100% rename from sql/10.17/aggregates.sql rename to sql/10.18/aggregates.sql diff --git a/sql/10.17/float4.sql b/sql/10.18/float4.sql similarity index 100% rename from sql/10.17/float4.sql rename to sql/10.18/float4.sql diff --git a/sql/10.17/float8.sql b/sql/10.18/float8.sql similarity index 100% rename from sql/10.17/float8.sql rename to sql/10.18/float8.sql diff --git a/sql/10.17/griddb_fdw.sql b/sql/10.18/griddb_fdw.sql similarity index 100% rename from sql/10.17/griddb_fdw.sql rename to sql/10.18/griddb_fdw.sql diff --git a/sql/10.17/griddb_fdw_data_type.sql b/sql/10.18/griddb_fdw_data_type.sql similarity index 100% rename from sql/10.17/griddb_fdw_data_type.sql rename to sql/10.18/griddb_fdw_data_type.sql diff --git a/sql/10.17/griddb_fdw_post.sql b/sql/10.18/griddb_fdw_post.sql similarity index 100% rename from sql/10.17/griddb_fdw_post.sql rename to sql/10.18/griddb_fdw_post.sql diff --git a/sql/10.17/insert.sql b/sql/10.18/insert.sql similarity index 100% rename from sql/10.17/insert.sql rename to sql/10.18/insert.sql diff --git a/sql/10.17/int4.sql b/sql/10.18/int4.sql similarity index 100% rename from sql/10.17/int4.sql rename to sql/10.18/int4.sql diff --git a/sql/10.17/int8.sql b/sql/10.18/int8.sql similarity index 100% rename from sql/10.17/int8.sql rename to sql/10.18/int8.sql diff --git a/sql/10.17/join.sql b/sql/10.18/join.sql similarity index 100% rename from sql/10.17/join.sql rename to sql/10.18/join.sql diff --git a/sql/10.17/limit.sql b/sql/10.18/limit.sql similarity index 100% rename from sql/10.17/limit.sql rename to sql/10.18/limit.sql diff --git a/sql/10.17/numeric.sql b/sql/10.18/numeric.sql similarity index 100% rename from sql/10.17/numeric.sql rename to sql/10.18/numeric.sql diff --git a/sql/10.17/prepare.sql b/sql/10.18/prepare.sql similarity index 100% rename from sql/10.17/prepare.sql rename to sql/10.18/prepare.sql diff --git a/sql/10.17/select.sql b/sql/10.18/select.sql similarity index 100% rename from sql/10.17/select.sql rename to sql/10.18/select.sql diff --git a/sql/10.17/select_having.sql b/sql/10.18/select_having.sql similarity index 100% rename from sql/10.17/select_having.sql rename to sql/10.18/select_having.sql diff --git a/sql/10.17/selectfunc.sql b/sql/10.18/selectfunc.sql similarity index 100% rename from sql/10.17/selectfunc.sql rename to sql/10.18/selectfunc.sql diff --git a/sql/10.17/update.sql b/sql/10.18/update.sql similarity index 100% rename from sql/10.17/update.sql rename to sql/10.18/update.sql diff --git a/sql/11.12/aggregates.sql b/sql/11.13/aggregates.sql similarity index 100% rename from sql/11.12/aggregates.sql rename to sql/11.13/aggregates.sql diff --git a/sql/11.12/float4.sql b/sql/11.13/float4.sql similarity index 100% rename from sql/11.12/float4.sql rename to sql/11.13/float4.sql diff --git a/sql/11.12/float8.sql b/sql/11.13/float8.sql similarity index 100% rename from sql/11.12/float8.sql rename to sql/11.13/float8.sql diff --git a/sql/11.12/griddb_fdw.sql b/sql/11.13/griddb_fdw.sql similarity index 100% rename from sql/11.12/griddb_fdw.sql rename to sql/11.13/griddb_fdw.sql diff --git a/sql/11.12/griddb_fdw_data_type.sql b/sql/11.13/griddb_fdw_data_type.sql similarity index 100% rename from sql/11.12/griddb_fdw_data_type.sql rename to sql/11.13/griddb_fdw_data_type.sql diff --git a/sql/11.12/griddb_fdw_post.sql b/sql/11.13/griddb_fdw_post.sql similarity index 100% rename from sql/11.12/griddb_fdw_post.sql rename to sql/11.13/griddb_fdw_post.sql diff --git a/sql/11.12/insert.sql b/sql/11.13/insert.sql similarity index 100% rename from sql/11.12/insert.sql rename to sql/11.13/insert.sql diff --git a/sql/11.12/int4.sql b/sql/11.13/int4.sql similarity index 100% rename from sql/11.12/int4.sql rename to sql/11.13/int4.sql diff --git a/sql/11.12/int8.sql b/sql/11.13/int8.sql similarity index 100% rename from sql/11.12/int8.sql rename to sql/11.13/int8.sql diff --git a/sql/11.12/join.sql b/sql/11.13/join.sql similarity index 100% rename from sql/11.12/join.sql rename to sql/11.13/join.sql diff --git a/sql/11.12/limit.sql b/sql/11.13/limit.sql similarity index 100% rename from sql/11.12/limit.sql rename to sql/11.13/limit.sql diff --git a/sql/11.12/numeric.sql b/sql/11.13/numeric.sql similarity index 100% rename from sql/11.12/numeric.sql rename to sql/11.13/numeric.sql diff --git a/sql/11.12/prepare.sql b/sql/11.13/prepare.sql similarity index 100% rename from sql/11.12/prepare.sql rename to sql/11.13/prepare.sql diff --git a/sql/11.12/select.sql b/sql/11.13/select.sql similarity index 100% rename from sql/11.12/select.sql rename to sql/11.13/select.sql diff --git a/sql/11.12/select_having.sql b/sql/11.13/select_having.sql similarity index 100% rename from sql/11.12/select_having.sql rename to sql/11.13/select_having.sql diff --git a/sql/11.12/selectfunc.sql b/sql/11.13/selectfunc.sql similarity index 100% rename from sql/11.12/selectfunc.sql rename to sql/11.13/selectfunc.sql diff --git a/sql/11.12/update.sql b/sql/11.13/update.sql similarity index 100% rename from sql/11.12/update.sql rename to sql/11.13/update.sql diff --git a/sql/12.7/aggregates.sql b/sql/12.8/aggregates.sql similarity index 100% rename from sql/12.7/aggregates.sql rename to sql/12.8/aggregates.sql diff --git a/sql/12.7/float4.sql b/sql/12.8/float4.sql similarity index 100% rename from sql/12.7/float4.sql rename to sql/12.8/float4.sql diff --git a/sql/12.7/float8.sql b/sql/12.8/float8.sql similarity index 100% rename from sql/12.7/float8.sql rename to sql/12.8/float8.sql diff --git a/sql/12.7/griddb_fdw.sql b/sql/12.8/griddb_fdw.sql similarity index 100% rename from sql/12.7/griddb_fdw.sql rename to sql/12.8/griddb_fdw.sql diff --git a/sql/12.7/griddb_fdw_data_type.sql b/sql/12.8/griddb_fdw_data_type.sql similarity index 100% rename from sql/12.7/griddb_fdw_data_type.sql rename to sql/12.8/griddb_fdw_data_type.sql diff --git a/sql/12.7/griddb_fdw_post.sql b/sql/12.8/griddb_fdw_post.sql similarity index 100% rename from sql/12.7/griddb_fdw_post.sql rename to sql/12.8/griddb_fdw_post.sql diff --git a/sql/12.7/insert.sql b/sql/12.8/insert.sql similarity index 100% rename from sql/12.7/insert.sql rename to sql/12.8/insert.sql diff --git a/sql/12.7/int4.sql b/sql/12.8/int4.sql similarity index 100% rename from sql/12.7/int4.sql rename to sql/12.8/int4.sql diff --git a/sql/12.7/int8.sql b/sql/12.8/int8.sql similarity index 100% rename from sql/12.7/int8.sql rename to sql/12.8/int8.sql diff --git a/sql/12.7/join.sql b/sql/12.8/join.sql similarity index 100% rename from sql/12.7/join.sql rename to sql/12.8/join.sql diff --git a/sql/12.7/limit.sql b/sql/12.8/limit.sql similarity index 100% rename from sql/12.7/limit.sql rename to sql/12.8/limit.sql diff --git a/sql/12.7/numeric.sql b/sql/12.8/numeric.sql similarity index 100% rename from sql/12.7/numeric.sql rename to sql/12.8/numeric.sql diff --git a/sql/12.7/prepare.sql b/sql/12.8/prepare.sql similarity index 100% rename from sql/12.7/prepare.sql rename to sql/12.8/prepare.sql diff --git a/sql/12.7/select.sql b/sql/12.8/select.sql similarity index 100% rename from sql/12.7/select.sql rename to sql/12.8/select.sql diff --git a/sql/12.7/select_having.sql b/sql/12.8/select_having.sql similarity index 100% rename from sql/12.7/select_having.sql rename to sql/12.8/select_having.sql diff --git a/sql/12.7/selectfunc.sql b/sql/12.8/selectfunc.sql similarity index 100% rename from sql/12.7/selectfunc.sql rename to sql/12.8/selectfunc.sql diff --git a/sql/12.7/update.sql b/sql/12.8/update.sql similarity index 100% rename from sql/12.7/update.sql rename to sql/12.8/update.sql diff --git a/sql/13.3/aggregates.sql b/sql/13.4/aggregates.sql similarity index 100% rename from sql/13.3/aggregates.sql rename to sql/13.4/aggregates.sql diff --git a/sql/13.3/float4.sql b/sql/13.4/float4.sql similarity index 100% rename from sql/13.3/float4.sql rename to sql/13.4/float4.sql diff --git a/sql/13.3/float8.sql b/sql/13.4/float8.sql similarity index 100% rename from sql/13.3/float8.sql rename to sql/13.4/float8.sql diff --git a/sql/13.3/griddb_fdw.sql b/sql/13.4/griddb_fdw.sql similarity index 100% rename from sql/13.3/griddb_fdw.sql rename to sql/13.4/griddb_fdw.sql diff --git a/sql/13.3/griddb_fdw_data_type.sql b/sql/13.4/griddb_fdw_data_type.sql similarity index 100% rename from sql/13.3/griddb_fdw_data_type.sql rename to sql/13.4/griddb_fdw_data_type.sql diff --git a/sql/13.3/griddb_fdw_post.sql b/sql/13.4/griddb_fdw_post.sql similarity index 100% rename from sql/13.3/griddb_fdw_post.sql rename to sql/13.4/griddb_fdw_post.sql diff --git a/sql/13.3/insert.sql b/sql/13.4/insert.sql similarity index 100% rename from sql/13.3/insert.sql rename to sql/13.4/insert.sql diff --git a/sql/13.3/int4.sql b/sql/13.4/int4.sql similarity index 100% rename from sql/13.3/int4.sql rename to sql/13.4/int4.sql diff --git a/sql/13.3/int8.sql b/sql/13.4/int8.sql similarity index 100% rename from sql/13.3/int8.sql rename to sql/13.4/int8.sql diff --git a/sql/13.3/join.sql b/sql/13.4/join.sql similarity index 100% rename from sql/13.3/join.sql rename to sql/13.4/join.sql diff --git a/sql/13.3/limit.sql b/sql/13.4/limit.sql similarity index 100% rename from sql/13.3/limit.sql rename to sql/13.4/limit.sql diff --git a/sql/13.3/numeric.sql b/sql/13.4/numeric.sql similarity index 100% rename from sql/13.3/numeric.sql rename to sql/13.4/numeric.sql diff --git a/sql/13.3/prepare.sql b/sql/13.4/prepare.sql similarity index 100% rename from sql/13.3/prepare.sql rename to sql/13.4/prepare.sql diff --git a/sql/13.3/select.sql b/sql/13.4/select.sql similarity index 100% rename from sql/13.3/select.sql rename to sql/13.4/select.sql diff --git a/sql/13.3/select_having.sql b/sql/13.4/select_having.sql similarity index 100% rename from sql/13.3/select_having.sql rename to sql/13.4/select_having.sql diff --git a/sql/13.3/selectfunc.sql b/sql/13.4/selectfunc.sql similarity index 100% rename from sql/13.3/selectfunc.sql rename to sql/13.4/selectfunc.sql diff --git a/sql/13.3/update.sql b/sql/13.4/update.sql similarity index 100% rename from sql/13.3/update.sql rename to sql/13.4/update.sql diff --git a/sql/14beta2/aggregates.sql b/sql/14.0/aggregates.sql similarity index 98% rename from sql/14beta2/aggregates.sql rename to sql/14.0/aggregates.sql index 882a4c6..fea1ef9 100644 --- a/sql/14beta2/aggregates.sql +++ b/sql/14.0/aggregates.sql @@ -1668,6 +1668,22 @@ insert into multi_arg_agg values (1,3,'foo'),(0,null,null),(2,2,'bar'),(3,1,'baz select aggfns(distinct a,b,c order by a,c using ~<~,b) filter (where a > 1) from multi_arg_agg, generate_series(1,2) i; rollback; +-- check handling of bare boolean Var in FILTER +--Testcase 583: +select max(0) filter (where b1) from bool_test; +--Testcase 584: +select (select max(0) filter (where b1)) from bool_test; + +-- check for correct detection of nested-aggregate errors in FILTER +--Testcase 585: +select max(unique1) filter (where sum(ten) > 0) from tenk1; +--Testcase 586: +select (select max(unique1) filter (where sum(ten) > 0) from int8_tbl) from tenk1; +--Testcase 587: +select max(unique1) filter (where bool_or(ten > 0)) from tenk1; +--Testcase 588: +select (select max(unique1) filter (where bool_or(ten > 0)) from int8_tbl) from tenk1; + -- ordered-set aggregates begin; @@ -2496,7 +2512,7 @@ rollback; -- see CAFeeJoKKu0u+A_A9R9316djW-YW3-+Gtgvy3ju655qRHR3jtdA@mail.gmail.com --Testcase 527: -set enable_resultcache to off; +set enable_memoize to off; --Testcase 528: explain (costs off) @@ -2504,7 +2520,7 @@ explain (costs off) where (hundred, thousand) in (select twothousand, twothousand from onek); --Testcase 529: -reset enable_resultcache; +reset enable_memoize; -- -- Hash Aggregation Spill tests diff --git a/sql/14beta2/float4.sql b/sql/14.0/float4.sql similarity index 100% rename from sql/14beta2/float4.sql rename to sql/14.0/float4.sql diff --git a/sql/14beta2/float8.sql b/sql/14.0/float8.sql similarity index 100% rename from sql/14beta2/float8.sql rename to sql/14.0/float8.sql diff --git a/sql/14beta2/griddb_fdw.sql b/sql/14.0/griddb_fdw.sql similarity index 100% rename from sql/14beta2/griddb_fdw.sql rename to sql/14.0/griddb_fdw.sql diff --git a/sql/14beta2/griddb_fdw_data_type.sql b/sql/14.0/griddb_fdw_data_type.sql similarity index 100% rename from sql/14beta2/griddb_fdw_data_type.sql rename to sql/14.0/griddb_fdw_data_type.sql diff --git a/sql/14beta2/griddb_fdw_post.sql b/sql/14.0/griddb_fdw_post.sql similarity index 98% rename from sql/14beta2/griddb_fdw_post.sql rename to sql/14.0/griddb_fdw_post.sql index ba06fd7..99cadac 100644 --- a/sql/14beta2/griddb_fdw_post.sql +++ b/sql/14.0/griddb_fdw_post.sql @@ -1854,13 +1854,15 @@ DROP TABLE reind_fdw_parent; ALTER FOREIGN TABLE ft1 ALTER COLUMN c8 TYPE int; --Testcase 396: -SELECT * FROM ft1 WHERE c1 = 1; -- ERROR +SELECT * FROM ft1 ftx(x1,x2,x3,x4,x5,x6,x7,x8) WHERE x1 = 1; -- ERROR --Testcase 397: -SELECT ft1.c1, ft2.c2, ft1.c8 FROM ft1, ft2 WHERE ft1.c1 = ft2.c1 AND ft1.c1 = 1; -- ERROR +SELECT ftx.x1, ft2.c2, ftx.x8 FROM ft1 ftx(x1,x2,x3,x4,x5,x6,x7,x8), ft2 + WHERE ftx.x1 = ft2.c1 AND ftx.x1 = 1; -- ERROR --Testcase 398: -SELECT ft1.c1, ft2.c2, ft1 FROM ft1, ft2 WHERE ft1.c1 = ft2.c1 AND ft1.c1 = 1; -- ERROR +SELECT ftx.x1, ft2.c2, ftx FROM ft1 ftx(x1,x2,x3,x4,x5,x6,x7,x8), ft2 + WHERE ftx.x1 = ft2.c1 AND ftx.x1 = 1; -- ERROR --Testcase 399: SELECT sum(c2), array_agg(c8) FROM ft1 GROUP BY c8; -- ERROR @@ -2518,7 +2520,14 @@ select f1, f2 from rem1; -- =================================================================== -- test generated columns -- =================================================================== ---create table gloc1 (a int, b int); +-- griddb does not support generated column, so data will be generated +-- at FDW layer before inserted to remote table. +--Testcase 1103: +create foreign table gloc1 ( + id serial OPTIONS (rowkey 'true'), + a int, + b int) + server griddb_svr; --alter table gloc1 set (autovacuum_enabled = 'false'); --Testcase 547: @@ -2528,15 +2537,57 @@ create foreign table grem1 ( b int generated always as (a * 2) stored) server griddb_svr options(table_name 'gloc1'); +--Testcase 1075: +explain (verbose, costs off) +insert into grem1 (a) values (1), (2); + --Testcase 548: insert into grem1 (a) values (1), (2); +--Testcase 1076: +explain (verbose, costs off) +update grem1 set a = 22 where a = 2; + --Testcase 549: update grem1 set a = 22 where a = 2; +--Testcase 1100: +select a,b from gloc1; --Testcase 550: select a, b from grem1; +--Testcase 1077: +delete from grem1; + +-- test copy from +copy grem1(a) from stdin; +1 +2 +\. +--Testcase 1101: +select a,b from gloc1; +--Testcase 1078: +select a, b from grem1; +--Testcase 1079: +delete from grem1; + +-- test batch insert +--Testcase 1080: +alter server griddb_svr options (add batch_size '10'); +--Testcase 1081: +explain (verbose, costs off) +insert into grem1 (a) values (1), (2); +--Testcase 1082: +insert into grem1 (a) values (1), (2); +--Testcase 1102: +select a, b from gloc1; +--Testcase 1083: +select a, b from grem1; +--Testcase 1084: +delete from grem1; +--Testcase 1085: +alter server griddb_svr options (drop batch_size); + -- =================================================================== -- test local triggers -- =================================================================== @@ -2918,6 +2969,13 @@ DROP TRIGGER trig_row_after ON rem1; DROP TRIGGER trig_local_before ON rem1; -- Test direct foreign table modification functionality +-- GridDB does not support direct modification +--Testcase 1086: +EXPLAIN (verbose, costs off) +DELETE FROM rem1; -- can't be pushed down +--Testcase 1087: +EXPLAIN (verbose, costs off) +DELETE FROM rem1 WHERE false; -- currently can't be pushed down -- Test with statement-level triggers @@ -3751,6 +3809,7 @@ update utrtest set a = 3; -- ERROR --Testcase 850: explain (verbose, costs off) update utrtest set a = 3 from (values (2), (3)) s(x) where a = s.x; +--Testcase 1088: update utrtest set a = 3 from (values (2), (3)) s(x) where a = s.x; -- ERROR --Testcase 851: @@ -4910,13 +4969,21 @@ SELECT COUNT(*) FROM ftable; -- griddb_fdw can not delete the large number of rows in one query -- because of the transaction timeout, so we delete small parts -- from foreign table +--Testcase 1089: DELETE FROM ftable WHERE x < 10000; +--Testcase 1090: DELETE FROM ftable WHERE x < 20000; +--Testcase 1091: DELETE FROM ftable WHERE x < 30000; +--Testcase 1092: DELETE FROM ftable WHERE x < 40000; +--Testcase 1093: DELETE FROM ftable WHERE x < 50000; +--Testcase 1094: DELETE FROM ftable WHERE x < 60000; +--Testcase 1095: DELETE FROM ftable WHERE x < 70000; +--Testcase 1096: DELETE FROM ftable; --Testcase 1043: @@ -5216,6 +5283,25 @@ DROP TABLE batch_table, batch_cp_upd_test CASCADE; -- ALTER SERVER griddb_svr OPTIONS (DROP async_capable); -- ALTER SERVER griddb_svr2 OPTIONS (DROP async_capable); +-- =================================================================== +-- test invalid server and foreign table options +-- =================================================================== +-- Invalid fdw_startup_cost option +--Testcase 1097: +CREATE SERVER inv_scst FOREIGN DATA WRAPPER griddb_fdw + OPTIONS(fdw_startup_cost '100$%$#$#'); +-- Invalid fdw_tuple_cost option +--Testcase 1098: +CREATE SERVER inv_scst FOREIGN DATA WRAPPER griddb_fdw + OPTIONS(fdw_tuple_cost '100$%$#$#'); +-- Invalid fetch_size option +--CREATE FOREIGN TABLE inv_fsz (c1 int ) +-- SERVER griddb_svr OPTIONS (fetch_size '100$%$#$#'); +-- Invalid batch_size option +--Testcase 1099: +CREATE FOREIGN TABLE inv_bsz (c1 int ) + SERVER griddb_svr OPTIONS (batch_size '100$%$#$#'); + -- Drop all foreign tables --Testcase 1063: diff --git a/sql/14beta2/insert.sql b/sql/14.0/insert.sql similarity index 100% rename from sql/14beta2/insert.sql rename to sql/14.0/insert.sql diff --git a/sql/14beta2/int4.sql b/sql/14.0/int4.sql similarity index 100% rename from sql/14beta2/int4.sql rename to sql/14.0/int4.sql diff --git a/sql/14beta2/int8.sql b/sql/14.0/int8.sql similarity index 100% rename from sql/14beta2/int8.sql rename to sql/14.0/int8.sql diff --git a/sql/14beta2/join.sql b/sql/14.0/join.sql similarity index 99% rename from sql/14beta2/join.sql rename to sql/14.0/join.sql index 0bc0ec4..762780a 100644 --- a/sql/14beta2/join.sql +++ b/sql/14.0/join.sql @@ -876,7 +876,7 @@ set work_mem to '64kB'; set enable_mergejoin to off; --Testcase 178: -set enable_resultcache to off; +set enable_memoize to off; --Testcase 179: explain (costs off) @@ -894,7 +894,7 @@ reset work_mem; reset enable_mergejoin; --Testcase 183: -reset enable_resultcache; +reset enable_memoize; -- -- regression test for 8.2 bug with improper re-ordering of left joins @@ -1609,6 +1609,10 @@ select unique1 from tenk1, f_immutable_int4(1) x where x = unique1; explain (costs off) select unique1 from tenk1, lateral f_immutable_int4(1) x where x = unique1; +--Testcase 704: +explain (costs off) +select unique1 from tenk1, lateral f_immutable_int4(1) x where x in (select 17); + --Testcase 291: explain (costs off) select unique1, x from tenk1 join f_immutable_int4(1) x on unique1 = x; diff --git a/sql/14beta2/limit.sql b/sql/14.0/limit.sql similarity index 100% rename from sql/14beta2/limit.sql rename to sql/14.0/limit.sql diff --git a/sql/14beta2/numeric.sql b/sql/14.0/numeric.sql similarity index 96% rename from sql/14beta2/numeric.sql rename to sql/14.0/numeric.sql index e9694ac..825dae8 100644 --- a/sql/14beta2/numeric.sql +++ b/sql/14.0/numeric.sql @@ -2341,6 +2341,63 @@ INSERT INTO fract_only VALUES (11, '-Inf'::numeric(4,4)); -- should fail --Testcase 672: SELECT id, val::numeric(4,4) FROM fract_only; +-- Check conversion to integers +--Testcase 1309: +CREATE FOREIGN TABLE INT8_TMP(id serial OPTIONS (rowkey 'true'), q1 int8, q2 int8) SERVER griddb_svr; +--Testcase 1310: +CREATE FOREIGN TABLE INT4_TMP(id serial OPTIONS (rowkey 'true'), a int4, b int4) SERVER griddb_svr; +--Testcase 1311: +CREATE FOREIGN TABLE INT2_TMP(id serial OPTIONS (rowkey 'true'), f1 int2) SERVER griddb_svr; + +--Testcase 1312: +DELETE FROM INT8_TMP; +--Testcase 1271: +INSERT INTO INT8_TMP(q1) VALUES (-9223372036854775808.5); -- should fail +--Testcase 1313: +INSERT INTO INT8_TMP(q1) VALUES (-9223372036854775808.4); +--Testcase 1272: +SELECT q1 FROM INT8_TMP; -- ok +--Testcase 1314: +DELETE FROM INT8_TMP; +--Testcase 1315: +INSERT INTO INT8_TMP(q1) VALUES (9223372036854775807.4); +--Testcase 1273: +SELECT q1 FROM INT8_TMP; -- ok +--Testcase 1316: +DELETE FROM INT8_TMP; +--Testcase 1274: +INSERT INTO INT8_TMP(q1) VALUES (9223372036854775807.5); -- should fail +--Testcase 1275: +INSERT INTO INT4_TMP(a) VALUES (-2147483648.5); -- should fail +--Testcase 1317: +INSERT INTO INT4_TMP(a) VALUES (-2147483648.4); +--Testcase 1276: +SELECT a FROM INT4_TMP; -- ok +--Testcase 1318: +DELETE FROM INT4_TMP; +--Testcase 1319: +INSERT INTO INT4_TMP(a) VALUES (2147483647.4); +--Testcase 1277: +SELECT a FROM INT4_TMP; -- ok +--Testcase 1278: +INSERT INTO INT4_TMP(a) VALUES (2147483647.5); -- should fail +--Testcase 1279: +INSERT INTO INT2_TMP(f1) VALUES (-32768.5); -- should fail +--Testcase 1320: +DELETE FROM INT2_TMP; +--Testcase 1321: +INSERT INTO INT2_TMP(f1) VALUES (-32768.4); +--Testcase 1280: +SELECT f1 FROM INT2_TMP; -- ok +--Testcase 1322: +DELETE FROM INT2_TMP; +--Testcase 1322: +INSERT INTO INT2_TMP(f1) VALUES (32767.4); +--Testcase 1281: +SELECT f1 FROM INT2_TMP; -- ok +--Testcase 1282: +INSERT INTO INT2_TMP(f1) VALUES (32767.5); -- should fail + -- Check inf/nan conversion behavior --Testcase 673: @@ -2815,8 +2872,6 @@ SELECT to_char(val::numeric(210,10), 'FM9999999999999999.999999999999999') FROM --Testcase 794: SELECT to_char(val::numeric(210,10), '9.999EEEE') FROM num_data; -BEGIN; - --Testcase 795: DELETE FROM v; @@ -2829,9 +2884,17 @@ SELECT x, to_char(x::float8, '9.999EEEE') as float8, to_char(x::float4, '9.999EEEE') as float4 FROM v; -ROLLBACK; -BEGIN; +--Testcase 1283: +DELETE FROM v; +--Testcase 1284: +INSERT INTO v(x) VALUES (-16379),(-16378),(-1234),(-789),(-45),(-5),(-4),(-3),(-2),(-1),(0), + (1),(2),(3),(4),(5),(38),(275),(2345),(45678),(131070),(131071); + +--Testcase 1285: +SELECT x, + to_char(('1.2345e'||x)::numeric, '9.999EEEE') as numeric +FROM v; --Testcase 798: DELETE FROM v; @@ -2845,9 +2908,6 @@ SELECT x, to_char(x::float8, 'MI9999999999.99') as float8, to_char(x::float4, 'MI9999999999.99') as float4 FROM v; -ROLLBACK; - -BEGIN; --Testcase 801: DELETE FROM v; @@ -2861,7 +2921,8 @@ SELECT x, to_char(x::float8, 'MI99.99') as float8, to_char(x::float4, 'MI99.99') as float4 FROM v; -ROLLBACK; +--Testcase 1286: +DELETE FROM v; --Testcase 804: DELETE FROM ceil_floor_round; @@ -3069,6 +3130,13 @@ INSERT INTO num_test_calc(n1, n2) VALUES (47699999999999999999999999999999999999 --Testcase 856: SELECT n1::numeric * n2::numeric FROM num_test_calc; +--Testcase 1287: +DELETE FROM num_test_calc; +--Testcase 1288: +INSERT INTO num_test_calc(n1, n2) VALUES ((0.1 - 2e-16383), (0.1 - 3e-16383)); +--Testcase 1289: +select trim_scale(n1::numeric * n2::numeric) from num_test_calc; + -- -- Test some corner cases for division -- @@ -3270,6 +3338,13 @@ INSERT INTO num_test_calc(n1, n2) VALUES (1.000000000123, (-2147483648)); --Testcase 918: SELECT n1::numeric ^ n2::numeric FROM num_test_calc; +--Testcase 1290: +DELETE FROM num_test_calc; +--Testcase 1291: +INSERT INTO num_test_calc(n1, n2) VALUES (0.9999999999, (23300000000000)); +--Testcase 1292: +SELECT coalesce(nullif(n1::numeric ^ n2::numeric, 0), 0) AS rounds_to_zero FROM num_test_calc; + -- cases that used to error out --Testcase 919: @@ -3284,6 +3359,28 @@ INSERT INTO num_test_calc(n1, n2) VALUES (0.5678, -85); --Testcase 922: SELECT n1::numeric ^ n2::numeric FROM num_test_calc; +--Testcase 1293: +DELETE FROM num_test_calc; +--Testcase 1294: +INSERT INTO num_test_calc(n1, n2) VALUES (0.9999999999, 70000000000000); +--Testcase 1295: +SELECT coalesce(nullif(n1::numeric ^ n2::numeric, 0), 0) AS underflows FROM num_test_calc; + +-- negative base to integer powers +--Testcase 1296: +DELETE FROM num_test_calc; +--Testcase 1297: +INSERT INTO num_test_calc(n1, n2) VALUES (-1.0, 2147483646); +--Testcase 1298: +INSERT INTO num_test_calc(n1, n2) VALUES (-1.0, 2147483647); +--Testcase 1299: +INSERT INTO num_test_calc(n1, n2) VALUES (-1.0, 2147483648); +--Testcase 1300: +INSERT INTO num_test_calc(n1, n2) VALUES (-1.0, 1000000000000000); +--Testcase 1301: +INSERT INTO num_test_calc(n1, n2) VALUES (-1.0, 1000000000000001); +--Testcase 1302: +SELECT (n1 ^ n2)::numeric(17,16) FROM num_test_calc; -- -- Tests for raising to non-integer powers -- @@ -3465,6 +3562,20 @@ INSERT INTO num_input_test(n1) VALUES ('-inf'); --Testcase 974: SELECT exp(n1::numeric(71, 70)) from num_input_test; +--Testcase 1303: +DELETE FROM num_input_test; +--Testcase 1304: +INSERT INTO num_input_test(n1) VALUES (-5000::numeric); +--Testcase 1305: +SELECT coalesce(nullif(exp(n1::numeric), 0), 0) AS rounds_to_zero FROM num_input_test; + +--Testcase 1306: +DELETE FROM num_input_test; +--Testcase 1307: +INSERT INTO num_input_test(n1) VALUES (-10000::numeric); +--Testcase 1308: +SELECT coalesce(nullif(exp(n1::numeric), 0), 0) AS underflows FROM num_input_test; + -- cases that used to generate inaccurate results --Testcase 975: @@ -4445,7 +4556,7 @@ DROP FOREIGN TABLE ceil_floor_round; DROP USER MAPPING FOR public SERVER griddb_svr; --Testcase 1269: -DROP SERVER griddb_svr; +DROP SERVER griddb_svr CASCADE; --Testcase 1270: DROP EXTENSION griddb_fdw CASCADE; diff --git a/sql/14beta2/prepare.sql b/sql/14.0/prepare.sql similarity index 100% rename from sql/14beta2/prepare.sql rename to sql/14.0/prepare.sql diff --git a/sql/14beta2/select.sql b/sql/14.0/select.sql similarity index 100% rename from sql/14beta2/select.sql rename to sql/14.0/select.sql diff --git a/sql/14beta2/select_having.sql b/sql/14.0/select_having.sql similarity index 100% rename from sql/14beta2/select_having.sql rename to sql/14.0/select_having.sql diff --git a/sql/14beta2/selectfunc.sql b/sql/14.0/selectfunc.sql similarity index 100% rename from sql/14beta2/selectfunc.sql rename to sql/14.0/selectfunc.sql diff --git a/sql/14beta2/update.sql b/sql/14.0/update.sql similarity index 100% rename from sql/14beta2/update.sql rename to sql/14.0/update.sql