You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by vr...@apache.org on 2016/06/22 22:14:58 UTC
incubator-hawq git commit: HAWQ-856 Explicitly initialize GPOPT and
its dependencies.
Repository: incubator-hawq
Updated Branches:
refs/heads/master 752a98cda -> 0f6ac20a9
HAWQ-856 Explicitly initialize GPOPT and its dependencies.
Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/0f6ac20a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/0f6ac20a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/0f6ac20a
Branch: refs/heads/master
Commit: 0f6ac20a9c687c70cac136f55e44022f8476792f
Parents: 752a98c
Author: Venkatesh (Venky) Raghavan <vr...@pivotal.io>
Authored: Wed Jun 22 15:14:38 2016 -0700
Committer: Venkatesh (Venky) Raghavan <vr...@pivotal.io>
Committed: Wed Jun 22 15:14:38 2016 -0700
----------------------------------------------------------------------
depends/thirdparty/gporca | 2 +-
depends/thirdparty/gpos | 2 +-
src/backend/gpopt/CGPOptimizer.cpp | 67 ++++++++++++++++++++++++++++++++-
src/backend/gpopt/ivy.xml | 4 +-
src/backend/utils/init/postinit.c | 14 +++++++
src/include/gpopt/CGPOptimizer.h | 7 ++++
6 files changed, 91 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/0f6ac20a/depends/thirdparty/gporca
----------------------------------------------------------------------
diff --git a/depends/thirdparty/gporca b/depends/thirdparty/gporca
index f0532b1..0d83756 160000
--- a/depends/thirdparty/gporca
+++ b/depends/thirdparty/gporca
@@ -1 +1 @@
-Subproject commit f0532b19c22c86e6959ae35fb9568096b7d666f9
+Subproject commit 0d837569e61182f68bf1b92038c6616401790a16
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/0f6ac20a/depends/thirdparty/gpos
----------------------------------------------------------------------
diff --git a/depends/thirdparty/gpos b/depends/thirdparty/gpos
index 91fa636..6af760f 160000
--- a/depends/thirdparty/gpos
+++ b/depends/thirdparty/gpos
@@ -1 +1 @@
-Subproject commit 91fa636d53ad71d56a4beae55e3ed1fb6d6f8f92
+Subproject commit 6af760fb96f5bd48783e8644e7d63c39132b8c08
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/0f6ac20a/src/backend/gpopt/CGPOptimizer.cpp
----------------------------------------------------------------------
diff --git a/src/backend/gpopt/CGPOptimizer.cpp b/src/backend/gpopt/CGPOptimizer.cpp
index c0eaa3e..db3cab8 100644
--- a/src/backend/gpopt/CGPOptimizer.cpp
+++ b/src/backend/gpopt/CGPOptimizer.cpp
@@ -48,7 +48,7 @@
void
CGPOptimizer::TouchLibraryInitializers()
{
- void (*gpos)() = gpos_init;
+ void (*gpos)(gpos_init_params*) = gpos_init;
void (*dxl)() = gpdxl_init;
void (*opt)() = gpopt_init;
}
@@ -90,6 +90,39 @@ CGPOptimizer::SzDXLPlan
return COptTasks::SzOptimize(pquery);
}
+//---------------------------------------------------------------------------
+// @function:
+// InitGPOPT()
+//
+// @doc:
+// Initialize GPTOPT and dependent libraries
+//
+//---------------------------------------------------------------------------
+void
+CGPOptimizer::InitGPOPT ()
+{
+ // Use GPORCA's default allocators
+ struct gpos_init_params params = { NULL, NULL };
+ gpos_init(¶ms);
+ gpdxl_init();
+ gpopt_init();
+}
+
+//---------------------------------------------------------------------------
+// @function:
+// TerminateGPOPT()
+//
+// @doc:
+// Terminate GPOPT and dependent libraries
+//
+//---------------------------------------------------------------------------
+void
+CGPOptimizer::TerminateGPOPT ()
+{
+ gpopt_terminate();
+ gpdxl_terminate();
+ gpos_terminate();
+}
//---------------------------------------------------------------------------
// @function:
@@ -130,4 +163,36 @@ char *SzDXLPlan
}
}
+//---------------------------------------------------------------------------
+// @function:
+// InitGPOPT()
+//
+// @doc:
+// Initialize GPTOPT and dependent libraries
+//
+//---------------------------------------------------------------------------
+extern "C"
+{
+void InitGPOPT ()
+{
+ return CGPOptimizer::InitGPOPT();
+}
+}
+
+//---------------------------------------------------------------------------
+// @function:
+// TerminateGPOPT()
+//
+// @doc:
+// Terminate GPOPT and dependent libraries
+//
+//---------------------------------------------------------------------------
+extern "C"
+{
+void TerminateGPOPT ()
+{
+ return CGPOptimizer::TerminateGPOPT();
+}
+}
+
// EOF
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/0f6ac20a/src/backend/gpopt/ivy.xml
----------------------------------------------------------------------
diff --git a/src/backend/gpopt/ivy.xml b/src/backend/gpopt/ivy.xml
index a9d08aa..43423eb 100644
--- a/src/backend/gpopt/ivy.xml
+++ b/src/backend/gpopt/ivy.xml
@@ -38,8 +38,8 @@ under the License.
</configurations>
<dependencies>
- <dependency org="emc" name="optimizer" rev="1.630" conf="osx106_x86->osx106_x86_32;osx106_x86_32->osx106_x86_32;rhel5_x86_64->rhel5_x86_64;suse10_x86_64->suse10_x86_64" />
- <dependency org="emc" name="libgpos" rev="1.136" conf="osx106_x86->osx106_x86_32;osx106_x86_32->osx106_x86_32;rhel5_x86_64->rhel5_x86_64;suse10_x86_64->suse10_x86_64" />
+ <dependency org="emc" name="optimizer" rev="1.633" conf="osx106_x86->osx106_x86_32;osx106_x86_32->osx106_x86_32;rhel5_x86_64->rhel5_x86_64;suse10_x86_64->suse10_x86_64" />
+ <dependency org="emc" name="libgpos" rev="1.137" conf="osx106_x86->osx106_x86_32;osx106_x86_32->osx106_x86_32;rhel5_x86_64->rhel5_x86_64;suse10_x86_64->suse10_x86_64" />
<dependency org="xerces" name="xerces-c" rev="3.1.1-p1" conf="osx106_x86->osx106_x86_32;osx106_x86_32->osx106_x86_32;rhel5_x86_64->rhel5_x86_64;suse10_x86_64->suse10_x86_64" />
</dependencies>
</ivy-module>
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/0f6ac20a/src/backend/utils/init/postinit.c
----------------------------------------------------------------------
diff --git a/src/backend/utils/init/postinit.c b/src/backend/utils/init/postinit.c
index c2e3c96..5358c5f 100644
--- a/src/backend/utils/init/postinit.c
+++ b/src/backend/utils/init/postinit.c
@@ -62,6 +62,11 @@ static void InitCommunication(void);
static void ShutdownPostgres(int code, Datum arg);
static bool ThereIsAtLeastOneRole(void);
+#ifdef USE_ORCA
+extern void InitGPOPT();
+extern void TerminateGPOPT();
+#endif
+
/*** InitPostgres support ***/
/*
@@ -471,6 +476,11 @@ InitPostgres(const char *in_dbname, Oid dboid, const char *username,
/* Initialize memory protection */
GPMemoryProtect_Init();
+#ifdef USE_ORCA
+ /* Initialize GPOPT */
+ InitGPOPT();
+#endif
+
/*
* Initialize my entry in the shared-invalidation manager's array of
* per-backend data.
@@ -727,6 +737,10 @@ ShutdownPostgres(int code, Datum arg)
*/
ReportOOMConsumption();
+#ifdef USE_ORCA
+ TerminateGPOPT();
+#endif
+
/* Disable memory protection */
GPMemoryProtect_Shutdown();
/* Release SessionState entry */
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/0f6ac20a/src/include/gpopt/CGPOptimizer.h
----------------------------------------------------------------------
diff --git a/src/include/gpopt/CGPOptimizer.h b/src/include/gpopt/CGPOptimizer.h
index a1061fd..68b3957 100644
--- a/src/include/gpopt/CGPOptimizer.h
+++ b/src/include/gpopt/CGPOptimizer.h
@@ -57,6 +57,13 @@ class CGPOptimizer
// serialize planned statement into DXL
static
char *SzDXLPlan(Query *pquery);
+
+ // gpopt initialize and terminate
+ static
+ void InitGPOPT();
+
+ static
+ void TerminateGPOPT();
};
#endif // CGPOptimizer_H