Repository: incubator-hawq Updated Branches: refs/heads/master 85192f8e4 -> b276946be
Revert "HAWQ-1093. Bump Orca version and enable Orca related exception propagation" This reverts commit 19f3fa81b1e4ca548d3534eeae2e114c66e4b717. Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/b276946b Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/b276946b Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/b276946b Branch: refs/heads/master Commit: b276946be7b7ccd10ab85eecb4f042697b2b4b67 Parents: 85192f8 Author: Ming LI <m...@apache.org> Authored: Tue Oct 11 16:27:33 2016 +0800 Committer: Ming LI <m...@apache.org> Committed: Tue Oct 11 16:27:33 2016 +0800 ---------------------------------------------------------------------- depends/thirdparty/gporca.commit | 2 +- depends/thirdparty/gpos.commit | 2 +- src/backend/gpopt/CGPOptimizer.cpp | 20 +------ src/backend/gpopt/gpdbwrappers.cpp | 7 +-- .../gpopt/translate/CTranslatorQueryToDXL.cpp | 2 + src/backend/gpopt/utils/COptTasks.cpp | 62 ++++++-------------- src/include/gpopt/utils/COptTasks.h | 4 -- src/test/regress/expected/errors.out | 4 -- src/test/regress/expected/horology.out | 5 +- src/test/regress/sql/errors.sql | 5 +- src/test/regress/sql/horology.sql | 6 +- 11 files changed, 28 insertions(+), 91 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b276946b/depends/thirdparty/gporca.commit ---------------------------------------------------------------------- diff --git a/depends/thirdparty/gporca.commit b/depends/thirdparty/gporca.commit index b7aef6e..cf4eaaa 100644 --- a/depends/thirdparty/gporca.commit +++ b/depends/thirdparty/gporca.commit @@ -1 +1 @@ -https://github.com/greenplum-db/gporca.git master cdd832b193a1fb21c8fa43bc5161ea381aa2b621 +https://github.com/greenplum-db/gporca.git master c5e40f283703b5fa4c2eb40f367ab7c1b1ab4d0d http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b276946b/depends/thirdparty/gpos.commit ---------------------------------------------------------------------- diff --git a/depends/thirdparty/gpos.commit b/depends/thirdparty/gpos.commit index 04c74ca..5455581 100644 --- a/depends/thirdparty/gpos.commit +++ b/depends/thirdparty/gpos.commit @@ -1 +1 @@ -https://github.com/greenplum-db/gpos.git master 7f1bd6eec40fcaaa032edeac88dd54660f2f0943 +https://github.com/greenplum-db/gpos.git master 6af760fb96f5bd48783e8644e7d63c39132b8c08 http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b276946b/src/backend/gpopt/CGPOptimizer.cpp ---------------------------------------------------------------------- diff --git a/src/backend/gpopt/CGPOptimizer.cpp b/src/backend/gpopt/CGPOptimizer.cpp index bcace95..db3cab8 100644 --- a/src/backend/gpopt/CGPOptimizer.cpp +++ b/src/backend/gpopt/CGPOptimizer.cpp @@ -37,8 +37,6 @@ #include "gpopt/init.h" #include "gpos/_api.h" -#include "naucrates/exception.h" - //--------------------------------------------------------------------------- // @function: // CGPOptimizer::TouchLibraryInitializers @@ -71,23 +69,7 @@ CGPOptimizer::PplstmtOptimize bool *pfUnexpectedFailure // output : set to true if optimizer unexpectedly failed to produce plan ) { - GPOS_TRY - { - return COptTasks::PplstmtOptimize(pquery, pfUnexpectedFailure); - } - GPOS_CATCH_EX(ex) - { - if (GPOS_MATCH_EX(ex, gpdxl::ExmaDXL, gpdxl::ExmiWarningAsError)) - { - elog(ERROR, "PQO unable to generate plan, please see the above message for details."); - } - if (GPOS_MATCH_EX(ex, gpdxl::ExmaGPDB, gpdxl::ExmiGPDBError)) - { - elog(ERROR, "GPDB exception. Aborting PQO plan generation."); - } - } - GPOS_CATCH_END; - return NULL; + return COptTasks::PplstmtOptimize(pquery, pfUnexpectedFailure); } http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b276946b/src/backend/gpopt/gpdbwrappers.cpp ---------------------------------------------------------------------- diff --git a/src/backend/gpopt/gpdbwrappers.cpp b/src/backend/gpopt/gpdbwrappers.cpp index 1d6a071..7d72823 100644 --- a/src/backend/gpopt/gpdbwrappers.cpp +++ b/src/backend/gpopt/gpdbwrappers.cpp @@ -237,13 +237,8 @@ #define GP_WRAP_END \ } \ - else \ - { \ - EmitErrorReport(); \ - FlushErrorState(); \ - GPOS_RAISE(gpdxl::ExmaGPDB, gpdxl::ExmiGPDBError); \ - } \ } \ + GPOS_RAISE(gpdxl::ExmaGPDB, gpdxl::ExmiGPDBError) using namespace gpos; http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b276946b/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp ---------------------------------------------------------------------- diff --git a/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp b/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp index 2985378..e03a542 100644 --- a/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp +++ b/src/backend/gpopt/translate/CTranslatorQueryToDXL.cpp @@ -447,6 +447,8 @@ CTranslatorQueryToDXL::CheckSupportedCmdType GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiQuery2DXLUnsupportedFeature, mapelem.m_wsz); } } + + GPOS_ASSERT(!"Unrecognized command type"); } //--------------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b276946b/src/backend/gpopt/utils/COptTasks.cpp ---------------------------------------------------------------------- diff --git a/src/backend/gpopt/utils/COptTasks.cpp b/src/backend/gpopt/utils/COptTasks.cpp index aa00410..ca20e4c 100644 --- a/src/backend/gpopt/utils/COptTasks.cpp +++ b/src/backend/gpopt/utils/COptTasks.cpp @@ -50,7 +50,6 @@ #include "utils/guc.h" #include "gpos/base.h" -#include "gpos/error/CException.h" #undef setstate #include "gpos/_api.h" @@ -179,37 +178,6 @@ COptTasks::SOptContext::SOptContext() m_szErrorMsg(NULL) {} -//--------------------------------------------------------------------------- -// @function: -// COptTasks::SOptContext::HandleError -// -// @doc: -// If there is an error print as warning and throw GPOS_EXCEPTION to abort -// plan generation. Calling elog::ERROR will result in longjump and hence -// a memory leak. -//--------------------------------------------------------------------------- -void -COptTasks::SOptContext::HandleError - ( - BOOL *pfUnexpectedFailure - ) -{ - BOOL bhasError = false; - if (NULL != m_szErrorMsg) - { - bhasError = true; - elog(WARNING, "%s", m_szErrorMsg); - } - *pfUnexpectedFailure = m_fUnexpectedFailure; - - // clean up context - Free(epinQuery, epinPlStmt); - if (bhasError) - { - GPOS_RAISE(gpdxl::ExmaDXL, gpdxl::ExmiWarningAsError); - } -} - //--------------------------------------------------------------------------- // @function: @@ -758,11 +726,9 @@ COptTasks::PdrgPssLoad } GPOS_CATCH_EX(ex) { - if (GPOS_MATCH_EX(ex, gpdxl::ExmaGPDB, gpdxl::ExmiGPDBError)) { - GPOS_RETHROW(ex); - } - elog(DEBUG2, "\n[OPT]: Using default search strategy"); GPOS_RESET_EX; + + elog(DEBUG2, "\n[OPT]: Using default search strategy"); } GPOS_CATCH_END; @@ -1562,6 +1528,13 @@ COptTasks::PvEvalExprFromDXLTask { CMDCache::Shutdown(); } + // Catch GPDB exceptions + if (GPOS_MATCH_EX(ex, gpdxl::ExmaGPDB, gpdxl::ExmiGPDBError)) + { + elog(NOTICE, "Found non const expression. Please check log for more information."); + GPOS_RESET_EX; + return NULL; + } if (FErrorOut(ex)) { IErrorContext *perrctxt = CTask::PtskSelf()->Perrctxt(); @@ -1643,18 +1616,17 @@ COptTasks::PplstmtOptimize SOptContext octx; octx.m_pquery = pquery; octx.m_fGeneratePlStmt= true; - GPOS_TRY - { - Execute(&PvOptimizeTask, &octx); - } + Execute(&PvOptimizeTask, &octx); - GPOS_CATCH_EX(ex) + if (NULL != octx.m_szErrorMsg) { - octx.HandleError(pfUnexpectedFailure); - GPOS_RETHROW(ex); + elog(ERROR, octx.m_szErrorMsg); } - GPOS_CATCH_END; - octx.HandleError(pfUnexpectedFailure); + *pfUnexpectedFailure = octx.m_fUnexpectedFailure; + + // clean up context + octx.Free(octx.epinQuery, octx.epinPlStmt); + return octx.m_pplstmt; } http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b276946b/src/include/gpopt/utils/COptTasks.h ---------------------------------------------------------------------- diff --git a/src/include/gpopt/utils/COptTasks.h b/src/include/gpopt/utils/COptTasks.h index fe24475..580ab1d 100644 --- a/src/include/gpopt/utils/COptTasks.h +++ b/src/include/gpopt/utils/COptTasks.h @@ -114,10 +114,6 @@ class COptTasks // ctor SOptContext(); - // If there is an error print as warning and throw exception to abort - // plan generation - void HandleError(BOOL *pfUnexpectedFailure); - // free all members except input and output pointers void Free(EPin epinInput, EPin epinOutput); http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b276946b/src/test/regress/expected/errors.out ---------------------------------------------------------------------- diff --git a/src/test/regress/expected/errors.out b/src/test/regress/expected/errors.out index 6f2f5e9..2e53cdc 100755 --- a/src/test/regress/expected/errors.out +++ b/src/test/regress/expected/errors.out @@ -483,13 +483,9 @@ create function infinite_recurse() returns int as -- # mpp-2756 -- m/(ERROR|WARNING|CONTEXT|NOTICE):.*stack depth limit exceeded\s+at\s+character/ -- s/\s+at\s+character.*// --- m/ERROR:.*GPDB exception. Aborting PQO.*/ --- s/ERROR:.*GPDB exception. Aborting PQO.*// -- end_matchsubs --- start_ignore select infinite_recurse(); ERROR: stack depth limit exceeded --- end_ignore select 1; -- test that this works ?column? ---------- http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b276946b/src/test/regress/expected/horology.out ---------------------------------------------------------------------- diff --git a/src/test/regress/expected/horology.out b/src/test/regress/expected/horology.out index 9786e5a..4b79ed8 100755 --- a/src/test/regress/expected/horology.out +++ b/src/test/regress/expected/horology.out @@ -10,9 +10,8 @@ INSERT INTO ABSTIME_HOROLOGY_TBL (f1) VALUES ('Jan 14, 1973 03:14:21'), (abstime 'epoch'), (abstime 'infinity'), (abstime '-infinity'), -(abstime 'May 10, 1947 23:59:12'); --- orca will fail for this -INSERT INTO ABSTIME_HOROLOGY_TBL (f1) VALUES('Jun 10, 1843'); +(abstime 'May 10, 1947 23:59:12'), +('Jun 10, 1843'); CREATE TABLE INTERVAL_HOROLOGY_TBL (f1 interval); NOTICE: Table doesn't have 'DISTRIBUTED BY' clause -- Using column named 'f1' as the Greenplum Database data distribution key for this table. HINT: The 'DISTRIBUTED BY' clause determines the distribution of data. Make sure column(s) chosen are the optimal data distribution key to minimize skew. http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b276946b/src/test/regress/sql/errors.sql ---------------------------------------------------------------------- diff --git a/src/test/regress/sql/errors.sql b/src/test/regress/sql/errors.sql index 9416057..5138407 100644 --- a/src/test/regress/sql/errors.sql +++ b/src/test/regress/sql/errors.sql @@ -400,10 +400,7 @@ create function infinite_recurse() returns int as -- # mpp-2756 -- m/(ERROR|WARNING|CONTEXT|NOTICE):.*stack depth limit exceeded\s+at\s+character/ -- s/\s+at\s+character.*// --- m/ERROR:.*GPDB exception. Aborting PQO.*/ --- s/ERROR:.*GPDB exception. Aborting PQO.*// -- end_matchsubs --- start_ignore select infinite_recurse(); --- end_ignore + select 1; -- test that this works http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/b276946b/src/test/regress/sql/horology.sql ---------------------------------------------------------------------- diff --git a/src/test/regress/sql/horology.sql b/src/test/regress/sql/horology.sql index 8f54e71..65eee0a 100644 --- a/src/test/regress/sql/horology.sql +++ b/src/test/regress/sql/horology.sql @@ -8,10 +8,8 @@ INSERT INTO ABSTIME_HOROLOGY_TBL (f1) VALUES ('Jan 14, 1973 03:14:21'), (abstime 'epoch'), (abstime 'infinity'), (abstime '-infinity'), -(abstime 'May 10, 1947 23:59:12'); - --- orca will fail for this -INSERT INTO ABSTIME_HOROLOGY_TBL (f1) VALUES('Jun 10, 1843'); +(abstime 'May 10, 1947 23:59:12'), +('Jun 10, 1843'); CREATE TABLE INTERVAL_HOROLOGY_TBL (f1 interval); INSERT INTO INTERVAL_HOROLOGY_TBL (f1) VALUES ('@ 1 minute'),