diff --git a/config/orca.m4 b/config/orca.m4 index ab2735bdd52d8905cd5e7a1c71101c4a1aeb84b1..18ae5aaab4be8210be17070d224c0e9f3553c383 100644 --- a/config/orca.m4 +++ b/config/orca.m4 @@ -40,10 +40,10 @@ AC_RUN_IFELSE([AC_LANG_PROGRAM([[ #include ]], [ -return strncmp("3.37.", GPORCA_VERSION_STRING, 5); +return strncmp("3.38.", GPORCA_VERSION_STRING, 5); ])], [AC_MSG_RESULT([[ok]])], -[AC_MSG_ERROR([Your ORCA version is expected to be 3.37.XXX])] +[AC_MSG_ERROR([Your ORCA version is expected to be 3.38.XXX])] ) AC_LANG_POP([C++]) ])# PGAC_CHECK_ORCA_VERSION diff --git a/configure b/configure index 079ddedba27998d99f8e5da62039505269b742c1..436390b30762566038027e6f2753012bfbad57f4 100755 --- a/configure +++ b/configure @@ -13995,7 +13995,7 @@ int main () { -return strncmp("3.37.", GPORCA_VERSION_STRING, 5); +return strncmp("3.38.", GPORCA_VERSION_STRING, 5); ; return 0; @@ -14005,7 +14005,7 @@ if ac_fn_cxx_try_run "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 $as_echo "ok" >&6; } else - as_fn_error $? "Your ORCA version is expected to be 3.37.XXX" "$LINENO" 5 + as_fn_error $? "Your ORCA version is expected to be 3.38.XXX" "$LINENO" 5 fi rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ diff --git a/depends/conanfile_orca.txt b/depends/conanfile_orca.txt index d6b12b7de77f094fb596ab62f3163daeee9bc15e..184aca1f49c310b5aace90b44f01f4c4ab70530f 100644 --- a/depends/conanfile_orca.txt +++ b/depends/conanfile_orca.txt @@ -1,5 +1,5 @@ [requires] -orca/v3.37.0@gpdb/stable +orca/v3.38.0@gpdb/stable [imports] include, * -> build/include diff --git a/gpAux/releng/releng.mk b/gpAux/releng/releng.mk index 2dd4ede94accd42b09b5d466c1483954f01addde..bc7d40d1a66aab8940af4ec244dcb2e9596011a9 100644 --- a/gpAux/releng/releng.mk +++ b/gpAux/releng/releng.mk @@ -88,9 +88,9 @@ sync_tools: opt_write_test ifeq "$(findstring aix,$(BLD_ARCH))" "" ifeq "$(findstring sles,$(BLD_ARCH))" "" - LD_LIBRARY_PATH='' wget --no-check-certificate -q -O - https://github.com/greenplum-db/gporca/archive/v3.37.0.tar.gz | tar zxf - -C $(BLD_TOP)/ext/$(BLD_ARCH) + LD_LIBRARY_PATH='' wget --no-check-certificate -q -O - https://github.com/greenplum-db/gporca/archive/v3.38.0.tar.gz | tar zxf - -C $(BLD_TOP)/ext/$(BLD_ARCH) else - LD_LIBRARY_PATH='' wget --no-check-certificate -q -O - https://github.com/greenplum-db/gporca/releases/download/v3.37.0/bin_orca_centos5_release.tar.gz | tar zxf - -C $(BLD_TOP)/ext/$(BLD_ARCH) + LD_LIBRARY_PATH='' wget --no-check-certificate -q -O - https://github.com/greenplum-db/gporca/releases/download/v3.38.0/bin_orca_centos5_release.tar.gz | tar zxf - -C $(BLD_TOP)/ext/$(BLD_ARCH) endif endif diff --git a/src/test/regress/expected/gporca.out b/src/test/regress/expected/gporca.out index 231cb897cbb62309bad3236a01f8fa83cb9dbd03..d56f501d7c0ed1dcb9d2f219f21a11d5798dbc6c 100644 --- a/src/test/regress/expected/gporca.out +++ b/src/test/regress/expected/gporca.out @@ -11005,3 +11005,17 @@ WITH abc AS (SELECT onetimefilter1.a, onetimefilter1.b FROM onetimefilter1, onet 1 | 0 | 10 (10 rows) +-- full joins with predicates +DROP TABLE IF EXISTS ffoo, fbar; +NOTICE: table "ffoo" does not exist, skipping +NOTICE: table "fbar" does not exist, skipping +CREATE TABLE ffoo (a, b) AS (VALUES (1, 2), (2, 3), (4, 5), (5, 6), (6, 7)) DISTRIBUTED BY (a); +CREATE TABLE fbar (c, d) AS (VALUES (1, 42), (2, 43), (4, 45), (5, 46)) DISTRIBUTED BY (c); +SELECT d FROM ffoo FULL OUTER JOIN fbar ON a = c WHERE b BETWEEN 5 and 9; + d +---- + 46 + + 45 +(3 rows) + diff --git a/src/test/regress/expected/gporca_optimizer.out b/src/test/regress/expected/gporca_optimizer.out index 9da4cad0f31e71797ffc7c711ba4f7d6d446d4c0..4b958ac61ee739c39247a5582e9aa770f36bb820 100644 --- a/src/test/regress/expected/gporca_optimizer.out +++ b/src/test/regress/expected/gporca_optimizer.out @@ -11111,6 +11111,20 @@ WITH abc AS (SELECT onetimefilter1.a, onetimefilter1.b FROM onetimefilter1, onet 1 | 0 | 10 (10 rows) +-- full joins with predicates +DROP TABLE IF EXISTS ffoo, fbar; +NOTICE: table "ffoo" does not exist, skipping +NOTICE: table "fbar" does not exist, skipping +CREATE TABLE ffoo (a, b) AS (VALUES (1, 2), (2, 3), (4, 5), (5, 6), (6, 7)) DISTRIBUTED BY (a); +CREATE TABLE fbar (c, d) AS (VALUES (1, 42), (2, 43), (4, 45), (5, 46)) DISTRIBUTED BY (c); +SELECT d FROM ffoo FULL OUTER JOIN fbar ON a = c WHERE b BETWEEN 5 and 9; + d +---- + 46 + + 45 +(3 rows) + -- start_ignore DROP SCHEMA orca CASCADE; NOTICE: drop cascades to 92 other objects @@ -11206,4 +11220,6 @@ drop cascades to function myint_numeric(myint) drop cascades to cast from myint to numeric drop cascades to table onetimefilter1 drop cascades to table onetimefilter2 +drop cascades to table ffoo +drop cascades to table fbar -- end_ignore diff --git a/src/test/regress/sql/gporca.sql b/src/test/regress/sql/gporca.sql index 9916ff78eab2d025daf79d3d9e8ca5c61fadd5f2..b6da9efedbfe66c7f8c547c3ca6ee6f41acaad0e 100644 --- a/src/test/regress/sql/gporca.sql +++ b/src/test/regress/sql/gporca.sql @@ -2047,6 +2047,14 @@ ANALYZE onetimefilter2; EXPLAIN WITH abc AS (SELECT onetimefilter1.a, onetimefilter1.b FROM onetimefilter1, onetimefilter2 WHERE onetimefilter1.a=onetimefilter2.a) SELECT (SELECT 1 FROM abc WHERE f1.b = f2.b LIMIT 1), COALESCE((SELECT 2 FROM abc WHERE f1.a=random() AND f1.a=2), 0), (SELECT b FROM abc WHERE b=f1.b) FROM onetimefilter1 f1, onetimefilter2 f2 WHERE f1.b = f2.b; WITH abc AS (SELECT onetimefilter1.a, onetimefilter1.b FROM onetimefilter1, onetimefilter2 WHERE onetimefilter1.a=onetimefilter2.a) SELECT (SELECT 1 FROM abc WHERE f1.b = f2.b LIMIT 1), COALESCE((SELECT 2 FROM abc WHERE f1.a=random() AND f1.a=2), 0), (SELECT b FROM abc WHERE b=f1.b) FROM onetimefilter1 f1, onetimefilter2 f2 WHERE f1.b = f2.b; + +-- full joins with predicates +DROP TABLE IF EXISTS ffoo, fbar; +CREATE TABLE ffoo (a, b) AS (VALUES (1, 2), (2, 3), (4, 5), (5, 6), (6, 7)) DISTRIBUTED BY (a); +CREATE TABLE fbar (c, d) AS (VALUES (1, 42), (2, 43), (4, 45), (5, 46)) DISTRIBUTED BY (c); + +SELECT d FROM ffoo FULL OUTER JOIN fbar ON a = c WHERE b BETWEEN 5 and 9; + -- start_ignore DROP SCHEMA orca CASCADE; -- end_ignore