You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@madlib.apache.org by ri...@apache.org on 2017/12/18 06:40:25 UTC
[2/2] madlib git commit: Upgrade: Add upgrade to v1.3 + enhancements
Upgrade: Add upgrade to v1.3 + enhancements
Changes:
- Changed upgrade process to use incremental changelists
For example: upgrading from v1.11 to v1.13 will involve
combining v1.11 -> v1.12 changelist and
v1.12 -> v1.13 changelist.
This change eases the burden of pre-populating these changelist files.
- Added v1.12 -> v1.13 changelist file
- Added some unittests in upgrade_util.py
- Refactored madpack.py to move some functions to a common file
- Changed use of 'opcamid' to 'opcmethod' for Greenplum 5+
Closes #216
Project: http://git-wip-us.apache.org/repos/asf/madlib/repo
Commit: http://git-wip-us.apache.org/repos/asf/madlib/commit/cefd15ea
Tree: http://git-wip-us.apache.org/repos/asf/madlib/tree/cefd15ea
Diff: http://git-wip-us.apache.org/repos/asf/madlib/diff/cefd15ea
Branch: refs/heads/master
Commit: cefd15eaceb88d017a78d24ae7db3e69cf5941f7
Parents: 32cce1a
Author: Rahul Iyer <ri...@apache.org>
Authored: Sun Dec 17 22:32:50 2017 -0800
Committer: Rahul Iyer <ri...@apache.org>
Committed: Sun Dec 17 22:39:20 2017 -0800
----------------------------------------------------------------------
deploy/postflight.sh | 4 +-
pom.xml | 2 +-
src/config/Version.yml | 2 +-
src/madpack/changelist.yaml | 79 -----
src/madpack/changelist_1.10.0_1.11.yaml | 63 ++++
src/madpack/changelist_1.10.0_1.12.yaml | 89 ------
src/madpack/changelist_1.11_1.12.yaml | 79 +++++
src/madpack/changelist_1.12_1.13.yaml | 84 ++++++
src/madpack/changelist_1.9.1_1.10.0.yaml | 130 +++++++++
src/madpack/changelist_1.9.1_1.12.yaml | 165 -----------
src/madpack/diff_udt.sql | 25 +-
src/madpack/madpack.py | 404 +++++++++-----------------
src/madpack/upgrade_util.py | 298 ++++++++++++++-----
src/madpack/utilities.py | 142 +++++++++
14 files changed, 897 insertions(+), 669 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/madlib/blob/cefd15ea/deploy/postflight.sh
----------------------------------------------------------------------
diff --git a/deploy/postflight.sh b/deploy/postflight.sh
index e03afec..59fa77f 100755
--- a/deploy/postflight.sh
+++ b/deploy/postflight.sh
@@ -1,8 +1,8 @@
#!/bin/bash
-# $0 - Script Path, $1 - Package Path, $2 - Target Location, and $3 - Target Volumn
+# $0 - Script Path, $1 - Package Path, $2 - Target Location, and $3 - Target Volume
-MADLIB_VERSION=1.13-dev
+MADLIB_VERSION=1.13
find $2/usr/local/madlib/bin -type d -exec cp -RPf {} $2/usr/local/madlib/old_bin \; 2>/dev/null
find $2/usr/local/madlib/bin -depth -type d -exec rm -r {} \; 2>/dev/null
http://git-wip-us.apache.org/repos/asf/madlib/blob/cefd15ea/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index 112b868..e1e3b0d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,7 +22,7 @@
<groupId>org.apache.madlib</groupId>
<artifactId>madlib</artifactId>
- <version>1.13-dev</version>
+ <version>1.13</version>
<packaging>pom</packaging>
<build>
http://git-wip-us.apache.org/repos/asf/madlib/blob/cefd15ea/src/config/Version.yml
----------------------------------------------------------------------
diff --git a/src/config/Version.yml b/src/config/Version.yml
index 7c852f9..e2ed1a4 100644
--- a/src/config/Version.yml
+++ b/src/config/Version.yml
@@ -1 +1 @@
-version: 1.13-dev
+version: 1.13
http://git-wip-us.apache.org/repos/asf/madlib/blob/cefd15ea/src/madpack/changelist.yaml
----------------------------------------------------------------------
diff --git a/src/madpack/changelist.yaml b/src/madpack/changelist.yaml
deleted file mode 100644
index 77edeb8..0000000
--- a/src/madpack/changelist.yaml
+++ /dev/null
@@ -1,79 +0,0 @@
-# ------------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-# ------------------------------------------------------------------------------
-
-# Changelist for MADlib version 1.11 to 1.12
-
-# This file contains all changes that were introduced in a new version of
-# MADlib. This changelist is used by the upgrade script to detect what objects
-# should be upgraded (while retaining all other objects from the previous version)
-
-# New modules (actually .sql_in files) added in upgrade version
-# For these files the sql_in code is retained as is with the functions in the
-# file installed on the upgrade version. All other files (that don't have
-# updates), are cleaned up to remove object replacements
-new module:
- # ----------------- Changes from 1.11 to 1.12 --------
- mlp:
- apsp:
- bfs:
- measures:
- wcc:
- stratified_sample:
- train_test_split:
-# Changes in the types (UDT) including removal and modification
-udt:
-
-# List of the UDF changes that affect the user externally. This includes change
-# in function name, return type, argument order or types, or removal of
-# the function. In each case, the original function is as good as removed and a
-# new function is created. In such cases, we should abort the upgrade if there
-# are user views dependent on this function, since the original function will
-# not be present in the upgraded version.
-udf:
- # ----------------- Changes from 1.11 to 1.12 ----------
- - tree_train:
- rettype: void
- argument: text, text, text, text, text, text, text, text, text, integer, integer, integer, integer, text, text, boolean
- - tree_train:
- rettype: void
- argument: text, text, text, text, text, text, text, text, text, integer, integer, integer, integer, text, text
- - forest_train:
- rettype: void
- argument: text, text, text, text, text, text, text, integer, integer, boolean, integer, integer, integer, integer, integer, text, boolean, double precision
- - forest_train:
- rettype: void
- argument: text, text, text, text, text, text, text, integer, integer, boolean, integer, integer, integer, integer, integer, text, boolean
- - forest_train:
- rettype: void
- argument: text, text, text, text, text, text, text, integer, integer, boolean, integer, integer, integer, integer, integer, text
- - _map_catlevel_to_int:
- rettype: integer[]
- argument: text[], text[], integer[]
-# Changes to aggregates (UDA) including removal and modification
-# Overloaded functions should be mentioned separately
-uda:
-
-# Casts (UDC) updated/removed
-udc:
-
-# Operators (UDO) removed/updated
-udo:
-
-# Operator Classes (UDOC) removed/updated
-udoc:
http://git-wip-us.apache.org/repos/asf/madlib/blob/cefd15ea/src/madpack/changelist_1.10.0_1.11.yaml
----------------------------------------------------------------------
diff --git a/src/madpack/changelist_1.10.0_1.11.yaml b/src/madpack/changelist_1.10.0_1.11.yaml
new file mode 100644
index 0000000..28bdb08
--- /dev/null
+++ b/src/madpack/changelist_1.10.0_1.11.yaml
@@ -0,0 +1,63 @@
+# ------------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ------------------------------------------------------------------------------
+
+# Changelist for MADlib version 1.10.0 to 1.11
+
+# This file contains all changes that were introduced in a new version of
+# MADlib. This changelist is used by the upgrade script to detect what objects
+# should be upgraded (while retaining all other objects from the previous version)
+
+# New modules (actually .sql_in files) added in upgrade version
+# For these files the sql_in code is retained as is with the functions in the
+# file installed on the upgrade version. All other files (that don't have
+# updates), are cleaned up to remove object replacements
+new module:
+ # ----------------- Changes from 1.10.0 to 1.11 --------
+ pagerank:
+# Changes in the types (UDT) including removal and modification
+udt:
+
+
+# List of the UDF changes that affect the user externally. This includes change
+# in function name, return type, argument order or types, or removal of
+# the function. In each case, the original function is as good as removed and a
+# new function is created. In such cases, we should abort the upgrade if there
+# are user views dependent on this function, since the original function will
+# not be present in the upgraded version.
+udf:
+ # ----------------- Changes from 1.10.0 to 1.11 ----------
+ - __build_tree:
+ rettype: void
+ argument: boolean, text, text, text, text, text, boolean, character varying[], character varying[], character varying[], text, text, integer, integer, integer, integer, text, smallint, text, integer
+ - graph_sssp_get_path:
+ rettype: integer[]
+ argument: text, integer
+
+# Changes to aggregates (UDA) including removal and modification
+# Overloaded functions should be mentioned separately
+uda:
+
+# Casts (UDC) updated/removed
+udc:
+
+# Operators (UDO) removed/updated
+udo:
+
+# Operator Classes (UDOC) removed/updated
+udoc:
http://git-wip-us.apache.org/repos/asf/madlib/blob/cefd15ea/src/madpack/changelist_1.10.0_1.12.yaml
----------------------------------------------------------------------
diff --git a/src/madpack/changelist_1.10.0_1.12.yaml b/src/madpack/changelist_1.10.0_1.12.yaml
deleted file mode 100644
index 3cac569..0000000
--- a/src/madpack/changelist_1.10.0_1.12.yaml
+++ /dev/null
@@ -1,89 +0,0 @@
-# ------------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-# ------------------------------------------------------------------------------
-
-# Changelist for MADlib version 1.10.0 to 1.12
-
-# This file contains all changes that were introduced in a new version of
-# MADlib. This changelist is used by the upgrade script to detect what objects
-# should be upgraded (while retaining all other objects from the previous version)
-
-# New modules (actually .sql_in files) added in upgrade version
-# For these files the sql_in code is retained as is with the functions in the
-# file installed on the upgrade version. All other files (that don't have
-# updates), are cleaned up to remove object replacements
-new module:
- # ----------------- Changes from 1.10.0 to 1.11 --------
- pagerank:
- # ----------------- Changes from 1.11 to 1.12 --------
- mlp:
- apsp:
- bfs:
- measures:
- wcc:
- stratified_sample:
- train_test_split:
-# Changes in the types (UDT) including removal and modification
-udt:
-
-
-# List of the UDF changes that affect the user externally. This includes change
-# in function name, return type, argument order or types, or removal of
-# the function. In each case, the original function is as good as removed and a
-# new function is created. In such cases, we should abort the upgrade if there
-# are user views dependent on this function, since the original function will
-# not be present in the upgraded version.
-udf:
- # ----------------- Changes from 1.10.0 to 1.11 ----------
- - __build_tree:
- rettype: void
- argument: boolean, text, text, text, text, text, boolean, character varying[], character varying[], character varying[], text, text, integer, integer, integer, integer, text, smallint, text, integer
- - graph_sssp_get_path:
- rettype: integer[]
- argument: text, integer
- # ----------------- Changes from 1.11 to 1.12 ----------
- - tree_train:
- rettype: void
- argument: text, text, text, text, text, text, text, text, text, integer, integer, integer, integer, text, text, boolean
- - tree_train:
- rettype: void
- argument: text, text, text, text, text, text, text, text, text, integer, integer, integer, integer, text, text
- - forest_train:
- rettype: void
- argument: text, text, text, text, text, text, text, integer, integer, boolean, integer, integer, integer, integer, integer, text, boolean, double precision
- - forest_train:
- rettype: void
- argument: text, text, text, text, text, text, text, integer, integer, boolean, integer, integer, integer, integer, integer, text, boolean
- - forest_train:
- rettype: void
- argument: text, text, text, text, text, text, text, integer, integer, boolean, integer, integer, integer, integer, integer, text
- - _map_catlevel_to_int:
- rettype: integer[]
- argument: text[], text[], integer[]
-# Changes to aggregates (UDA) including removal and modification
-# Overloaded functions should be mentioned separately
-uda:
-
-# Casts (UDC) updated/removed
-udc:
-
-# Operators (UDO) removed/updated
-udo:
-
-# Operator Classes (UDOC) removed/updated
-udoc:
http://git-wip-us.apache.org/repos/asf/madlib/blob/cefd15ea/src/madpack/changelist_1.11_1.12.yaml
----------------------------------------------------------------------
diff --git a/src/madpack/changelist_1.11_1.12.yaml b/src/madpack/changelist_1.11_1.12.yaml
new file mode 100644
index 0000000..77edeb8
--- /dev/null
+++ b/src/madpack/changelist_1.11_1.12.yaml
@@ -0,0 +1,79 @@
+# ------------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ------------------------------------------------------------------------------
+
+# Changelist for MADlib version 1.11 to 1.12
+
+# This file contains all changes that were introduced in a new version of
+# MADlib. This changelist is used by the upgrade script to detect what objects
+# should be upgraded (while retaining all other objects from the previous version)
+
+# New modules (actually .sql_in files) added in upgrade version
+# For these files the sql_in code is retained as is with the functions in the
+# file installed on the upgrade version. All other files (that don't have
+# updates), are cleaned up to remove object replacements
+new module:
+ # ----------------- Changes from 1.11 to 1.12 --------
+ mlp:
+ apsp:
+ bfs:
+ measures:
+ wcc:
+ stratified_sample:
+ train_test_split:
+# Changes in the types (UDT) including removal and modification
+udt:
+
+# List of the UDF changes that affect the user externally. This includes change
+# in function name, return type, argument order or types, or removal of
+# the function. In each case, the original function is as good as removed and a
+# new function is created. In such cases, we should abort the upgrade if there
+# are user views dependent on this function, since the original function will
+# not be present in the upgraded version.
+udf:
+ # ----------------- Changes from 1.11 to 1.12 ----------
+ - tree_train:
+ rettype: void
+ argument: text, text, text, text, text, text, text, text, text, integer, integer, integer, integer, text, text, boolean
+ - tree_train:
+ rettype: void
+ argument: text, text, text, text, text, text, text, text, text, integer, integer, integer, integer, text, text
+ - forest_train:
+ rettype: void
+ argument: text, text, text, text, text, text, text, integer, integer, boolean, integer, integer, integer, integer, integer, text, boolean, double precision
+ - forest_train:
+ rettype: void
+ argument: text, text, text, text, text, text, text, integer, integer, boolean, integer, integer, integer, integer, integer, text, boolean
+ - forest_train:
+ rettype: void
+ argument: text, text, text, text, text, text, text, integer, integer, boolean, integer, integer, integer, integer, integer, text
+ - _map_catlevel_to_int:
+ rettype: integer[]
+ argument: text[], text[], integer[]
+# Changes to aggregates (UDA) including removal and modification
+# Overloaded functions should be mentioned separately
+uda:
+
+# Casts (UDC) updated/removed
+udc:
+
+# Operators (UDO) removed/updated
+udo:
+
+# Operator Classes (UDOC) removed/updated
+udoc:
http://git-wip-us.apache.org/repos/asf/madlib/blob/cefd15ea/src/madpack/changelist_1.12_1.13.yaml
----------------------------------------------------------------------
diff --git a/src/madpack/changelist_1.12_1.13.yaml b/src/madpack/changelist_1.12_1.13.yaml
new file mode 100644
index 0000000..a08ba9f
--- /dev/null
+++ b/src/madpack/changelist_1.12_1.13.yaml
@@ -0,0 +1,84 @@
+# ------------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ------------------------------------------------------------------------------
+
+# Changelist for MADlib version 1.12 to 1.13
+
+# This file contains all changes that were introduced in a new version of
+# MADlib. This changelist is used by the upgrade script to detect what objects
+# should be upgraded (while retaining all other objects from the previous version)
+
+# New modules (actually .sql_in files) added in upgrade version
+# For these files the sql_in code is retained as is with the functions in the
+# file installed on the upgrade version. All other files (that don't have
+# updates), are cleaned up to remove object replacements
+new module:
+ # ----------------- Changes from 1.11 to 1.12 --------
+ hits:
+
+# Changes in the types (UDT) including removal and modification
+udt:
+
+# List of the UDF changes that affect the user externally. This includes change
+# in function name, return type, argument order or types, or removal of
+# the function. In each case, the original function is as good as removed and a
+# new function is created. In such cases, we should abort the upgrade if there
+# are user views dependent on this function, since the original function will
+# not be present in the upgraded version.
+udf:
+ # ----------------- Changes from 1.12 to 1.13 ----------
+ - __build_tree:
+ rettype: void
+ argument: boolean, text, text, text, text, text, boolean, character varying[], character varying[], character varying[], character varying[], text, text, integer, integer, integer, integer, text, smallint, text, integer
+ - mlp_classification:
+ rettype: void
+ argument: character varying, character varying, character varying, character varying
+ - mlp_igd_final:
+ rettype: mlp_step_result
+ argument: double precision[]
+ - mlp_igd_transition:
+ rettype: double precision[]
+ argument: double precision[], double precision[], double precision[], double precision[], double precision[], double precision, integer, integer, double precision, boolean, double precision[], integer, double precision, double precision[], double precision[]
+ - mlp_regression:
+ rettype: void
+ argument: character varying, character varying, character varying, character varying
+ - __knn_validate_src:
+ rettype: integer
+ argument: varchar, varchar, varchar, varchar, varchar, varchar, varchar, varchar, integer
+ - knn:
+ rettype: varchar
+ argument: varchar, varchar, varchar, varchar, varchar, varchar, varchar, varchar, integer
+ - knn:
+ rettype: varchar
+ argument: varchar, varchar, varchar, varchar, varchar, varchar, varchar, varchar
+
+# Changes to aggregates (UDA) including removal and modification
+# Overloaded functions should be mentioned separately
+uda:
+ - mlp_igd_step:
+ rettype: mlp_step_result
+ argument: double precision[], double precision[], double precision[], double precision[], double precision, integer, integer, double precision, boolean, double precision[], integer, double precision, double precision[], double precision[]
+
+# Casts (UDC) updated/removed
+udc:
+
+# Operators (UDO) removed/updated
+udo:
+
+# Operator Classes (UDOC) removed/updated
+udoc:
http://git-wip-us.apache.org/repos/asf/madlib/blob/cefd15ea/src/madpack/changelist_1.9.1_1.10.0.yaml
----------------------------------------------------------------------
diff --git a/src/madpack/changelist_1.9.1_1.10.0.yaml b/src/madpack/changelist_1.9.1_1.10.0.yaml
new file mode 100644
index 0000000..2acf926
--- /dev/null
+++ b/src/madpack/changelist_1.9.1_1.10.0.yaml
@@ -0,0 +1,130 @@
+# ------------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+# ------------------------------------------------------------------------------
+
+# Changelist for MADlib version 1.9.1 to 1.10
+
+# This file contains all changes that were introduced in a new version of
+# MADlib. This changelist is used by the upgrade script to detect what objects
+# should be upgraded (while retaining all other objects from the previous version)
+
+# New modules (actually .sql_in files) added in upgrade version
+# For these files the sql_in code is retained as is with the functions in the
+# file installed on the upgrade version. All other files (that don't have
+# updates), are cleaned up to remove object replacements
+new module:
+ # ----------------- Changes from 1.9.1 to 1.10.0 ----------
+ sssp:
+ encode_categorical:
+ knn:
+
+# Changes in the types (UDT) including removal and modification
+udt:
+
+ # ----------------- Changes from 1.9.1 to 1.10.0 ----------
+ kmeans_result:
+ kmeans_state:
+
+# List of the UDF changes that affect the user externally. This includes change
+# in function name, return type, argument order or types, or removal of
+# the function. In each case, the original function is as good as removed and a
+# new function is created. In such cases, we should abort the upgrade if there
+# are user views dependent on this function, since the original function will
+# not be present in the upgraded version.
+udf:
+
+ # ----------------- Changes from 1.9.1 to 1.10.0 ----------
+ - kmeans:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, double precision[], character varying, character varying, integer, double precision
+ - kmeans:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, double precision[], character varying, character varying, integer
+ - kmeans:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, double precision[], character varying, character varying
+ - kmeans:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, double precision[], character varying
+ - kmeans:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, double precision[]
+ - kmeans:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, character varying, character varying, character varying, character varying, integer, double precision
+ - kmeans:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, character varying, character varying, character varying, character varying, integer
+ - kmeans:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, character varying, character varying, character varying, character varying
+ - kmeans:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, character varying, character varying, character varying
+ - kmeans:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, character varying, character varying
+ - kmeanspp:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, integer, character varying, character varying, integer, double precision, double precision
+ - kmeanspp:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, integer, character varying, character varying, integer, double precision
+ - kmeanspp:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, integer, character varying, character varying, integer
+ - kmeanspp:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, integer, character varying, character varying
+ - kmeanspp:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, integer, character varying
+ - kmeanspp:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, integer
+ - kmeans_random:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, integer, character varying, character varying, integer, double precision
+ - kmeans_random:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, integer, character varying, character varying, integer
+ - kmeans_random:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, integer, character varying, character varying
+ - kmeans_random:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, integer, character varying
+ - kmeans_random:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, integer
+ - internal_execute_using_kmeans_args:
+ rettype: schema_madlib.kmeans_result
+ argument: character varying, character varying, character varying, character varying, character varying, integer, double precision
+
+# Changes to aggregates (UDA) including removal and modification
+# Overloaded functions should be mentioned separately
+uda:
+
+# Casts (UDC) updated/removed
+udc:
+
+# Operators (UDO) removed/updated
+udo:
+
+# Operator Classes (UDOC) removed/updated
+udoc:
http://git-wip-us.apache.org/repos/asf/madlib/blob/cefd15ea/src/madpack/changelist_1.9.1_1.12.yaml
----------------------------------------------------------------------
diff --git a/src/madpack/changelist_1.9.1_1.12.yaml b/src/madpack/changelist_1.9.1_1.12.yaml
deleted file mode 100644
index 5ba331a..0000000
--- a/src/madpack/changelist_1.9.1_1.12.yaml
+++ /dev/null
@@ -1,165 +0,0 @@
-# ------------------------------------------------------------------------------
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-# ------------------------------------------------------------------------------
-
-# Changelist for MADlib version 1.9.1 to 1.12
-
-# This file contains all changes that were introduced in a new version of
-# MADlib. This changelist is used by the upgrade script to detect what objects
-# should be upgraded (while retaining all other objects from the previous version)
-
-# New modules (actually .sql_in files) added in upgrade version
-# For these files the sql_in code is retained as is with the functions in the
-# file installed on the upgrade version. All other files (that don't have
-# updates), are cleaned up to remove object replacements
-new module:
- # ----------------- Changes from 1.9.1 to 1.10.0 ----------
- sssp:
- encode_categorical:
- knn:
- # ----------------- Changes from 1.10.0 to 1.11 --------
- pagerank:
- # ----------------- Changes from 1.11 to 1.12 --------
- mlp:
- apsp:
- bfs:
- measures:
- wcc:
- stratified_sample:
- train_test_split:
-# Changes in the types (UDT) including removal and modification
-udt:
-
- # ----------------- Changes from 1.9.1 to 1.10.0 ----------
- kmeans_result:
- kmeans_state:
-
-# List of the UDF changes that affect the user externally. This includes change
-# in function name, return type, argument order or types, or removal of
-# the function. In each case, the original function is as good as removed and a
-# new function is created. In such cases, we should abort the upgrade if there
-# are user views dependent on this function, since the original function will
-# not be present in the upgraded version.
-udf:
-
- # ----------------- Changes from 1.9.1 to 1.10.0 ----------
- - kmeans:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, double precision[], character varying, character varying, integer, double precision
- - kmeans:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, double precision[], character varying, character varying, integer
- - kmeans:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, double precision[], character varying, character varying
- - kmeans:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, double precision[], character varying
- - kmeans:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, double precision[]
- - kmeans:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, character varying, character varying, character varying, character varying, integer, double precision
- - kmeans:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, character varying, character varying, character varying, character varying, integer
- - kmeans:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, character varying, character varying, character varying, character varying
- - kmeans:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, character varying, character varying, character varying
- - kmeans:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, character varying, character varying
- - kmeanspp:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, integer, character varying, character varying, integer, double precision, double precision
- - kmeanspp:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, integer, character varying, character varying, integer, double precision
- - kmeanspp:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, integer, character varying, character varying, integer
- - kmeanspp:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, integer, character varying, character varying
- - kmeanspp:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, integer, character varying
- - kmeanspp:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, integer
- - kmeans_random:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, integer, character varying, character varying, integer, double precision
- - kmeans_random:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, integer, character varying, character varying, integer
- - kmeans_random:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, integer, character varying, character varying
- - kmeans_random:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, integer, character varying
- - kmeans_random:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, integer
- - internal_execute_using_kmeans_args:
- rettype: schema_madlib.kmeans_result
- argument: character varying, character varying, character varying, character varying, character varying, integer, double precision
- # ----------------- Changes from 1.10.0 to 1.11 ----------
- - __build_tree:
- rettype: void
- argument: boolean, text, text, text, text, text, boolean, character varying[], character varying[], character varying[], text, text, integer, integer, integer, integer, text, smallint, text, integer
- - graph_sssp_get_path:
- rettype: integer[]
- argument: text, integer
- # ----------------- Changes from 1.11 to 1.12 ----------
- - tree_train:
- rettype: void
- argument: text, text, text, text, text, text, text, text, text, integer, integer, integer, integer, text, text, boolean
- - tree_train:
- rettype: void
- argument: text, text, text, text, text, text, text, text, text, integer, integer, integer, integer, text, text
- - forest_train:
- rettype: void
- argument: text, text, text, text, text, text, text, integer, integer, boolean, integer, integer, integer, integer, integer, text, boolean, double precision
- - forest_train:
- rettype: void
- argument: text, text, text, text, text, text, text, integer, integer, boolean, integer, integer, integer, integer, integer, text, boolean
- - forest_train:
- rettype: void
- argument: text, text, text, text, text, text, text, integer, integer, boolean, integer, integer, integer, integer, integer, text
- - _map_catlevel_to_int:
- rettype: integer[]
- argument: text[], text[], integer[]
-
-# Changes to aggregates (UDA) including removal and modification
-# Overloaded functions should be mentioned separately
-uda:
-
-# Casts (UDC) updated/removed
-udc:
-
-# Operators (UDO) removed/updated
-udo:
-
-# Operator Classes (UDOC) removed/updated
-udoc:
http://git-wip-us.apache.org/repos/asf/madlib/blob/cefd15ea/src/madpack/diff_udt.sql
----------------------------------------------------------------------
diff --git a/src/madpack/diff_udt.sql b/src/madpack/diff_udt.sql
index dbb0bfb..1070ea4 100644
--- a/src/madpack/diff_udt.sql
+++ b/src/madpack/diff_udt.sql
@@ -34,7 +34,8 @@ CREATE OR REPLACE FUNCTION detect_changed_types(
RETURNS TEXT[] AS
$$
import plpy
-
+ OLD_SCHEMA = 'madlib_old_vers'
+ NEW_SCHEMA = 'madlib'
rv = plpy.execute("""
SELECT name, old_relid, new_relid
FROM {common_udt_table}
@@ -44,22 +45,31 @@ $$
name = r['name']
old_relid = r['old_relid']
new_relid = r['new_relid']
- rv = plpy.execute("""
+ res = plpy.execute("""
SELECT
array_eq(old_type, new_type) AS changed
FROM
(
- SELECT array_agg(a.attname || pg_catalog.format_type(a.atttypid, a.atttypmod) || a.attnum order by a.attnum) AS old_type
+ SELECT array_agg(a.attname ||
+ regexp_replace(pg_catalog.format_type(a.atttypid, a.atttypmod),
+ '{old_schema}.', '') ||
+ a.attnum order by a.attnum) AS old_type
FROM pg_catalog.pg_attribute a
WHERE a.attrelid = '{old_relid}' AND a.attnum > 0 AND NOT a.attisdropped
) t1,
(
- SELECT array_agg(a.attname || pg_catalog.format_type(a.atttypid, a.atttypmod) || a.attnum order by a.attnum) AS new_type
+ SELECT array_agg(a.attname ||
+ regexp_replace(pg_catalog.format_type(a.atttypid, a.atttypmod),
+ '{new_schema}.', '') ||
+ a.attnum order by a.attnum) AS new_type
FROM pg_catalog.pg_attribute a
WHERE a.attrelid = '{new_relid}' AND a.attnum > 0 AND NOT a.attisdropped
) t2
- """.format(old_relid=old_relid, new_relid=new_relid))[0]['changed']
- if not rv:
+ """.format(old_relid=old_relid,
+ new_relid=new_relid,
+ old_schema=OLD_SCHEMA,
+ new_schema=NEW_SCHEMA))[0]['changed']
+ if not res:
changed_udt.append(name)
return changed_udt
$$ LANGUAGE plpythonu;
@@ -67,8 +77,11 @@ $$ LANGUAGE plpythonu;
-- Get UDTs
DROP TABLE IF EXISTS types_madlib;
DROP TABLE IF EXISTS types_madlib_old_vers;
+set search_path = public, madlib;
SELECT get_types('madlib');
+set search_path = public, madlib_old_vers;
SELECT get_types('madlib_old_vers');
+set search_path = public;
--SELECT name FROM types_madlib;
--SELECT name FROM types_madlib_v15;
http://git-wip-us.apache.org/repos/asf/madlib/blob/cefd15ea/src/madpack/madpack.py
----------------------------------------------------------------------
diff --git a/src/madpack/madpack.py b/src/madpack/madpack.py
index aa78a52..e81c258 100755
--- a/src/madpack/madpack.py
+++ b/src/madpack/madpack.py
@@ -14,8 +14,13 @@ import tempfile
import shutil
import upgrade_util as uu
+from utilities import error_
+from utilities import info_
from utilities import is_rev_gte
from utilities import get_rev_num
+from utilities import run_query
+from utilities import get_madlib_dbrev
+from utilities import get_dbver
# Required Python version
py_min_ver = [2, 6]
@@ -56,7 +61,6 @@ SUPPORTED_PORTS = ('postgres', 'greenplum', 'hawq')
# Global variables
portid = None # Target port ID (eg: pg90, gp40)
-dbconn = None # DB Connection object
dbver = None # DB version
con_args = {} # DB connection arguments
verbose = None # Verbose flag
@@ -79,93 +83,6 @@ def _make_dir(dir):
# ------------------------------------------------------------------------------
-def _error(msg, stop):
- """
- Error message wrapper
- @param msg error message
- @param stop program exit flag
- """
- # Print to stdout
- print this + ' : ERROR : ' + msg
- # stack trace is not printed
- if stop:
- exit(2)
-# ------------------------------------------------------------------------------
-
-
-def _info(msg, verbose=True):
- """
- Info message wrapper (verbose)
- @param msg info message
- @param verbose prints only if True
- """
- # Print to stdout
- if verbose:
- print this + ' : INFO : ' + msg
-# ------------------------------------------------------------------------------
-
-
-def run_query(sql, show_error, con_args=con_args):
- # Define sqlcmd
- sqlcmd = 'psql'
- delimiter = ' <$madlib_delimiter$> '
-
- # Test the DB cmd line utility
- std, err = subprocess.Popen(['which', sqlcmd], stdout=subprocess.PIPE,
- stderr=subprocess.PIPE).communicate()
- if std == '':
- _error("Command not found: %s" % sqlcmd, True)
-
- # Run the query
- runcmd = [sqlcmd,
- '-h', con_args['host'].split(':')[0],
- '-p', con_args['host'].split(':')[1],
- '-d', con_args['database'],
- '-U', con_args['user'],
- '-F', delimiter,
- '--no-password',
- '--no-psqlrc',
- '--no-align',
- '-c', sql]
- runenv = os.environ
- if 'password' in con_args:
- runenv["PGPASSWORD"] = con_args['password']
- runenv["PGOPTIONS"] = '-c search_path=public -c client_min_messages=error'
- std, err = subprocess.Popen(runcmd, env=runenv, stdout=subprocess.PIPE,
- stderr=subprocess.PIPE).communicate()
-
- if err:
- if show_error:
- _error("SQL command failed: \nSQL: %s \n%s" % (sql, err), False)
- if 'password' in err:
- raise EnvironmentError
- else:
- raise Exception
-
- # Convert the delimited output into a dictionary
- results = [] # list of rows
- i = 0
- for line in std.splitlines():
- if i == 0:
- cols = [name for name in line.split(delimiter)]
- else:
- row = {} # dict of col_name:col_value pairs
- c = 0
- for val in line.split(delimiter):
- row[cols[c]] = val
- c += 1
- results.insert(i, row)
- i += 1
- # Drop the last line: "(X rows)"
- try:
- results.pop()
- except:
- pass
-
- return results
-# ------------------------------------------------------------------------------
-
-
def _internal_run_query(sql, show_error):
"""
Runs a SQL query on the target platform DB
@@ -175,7 +92,7 @@ def _internal_run_query(sql, show_error):
@param sql query text to execute
@param show_error displays the SQL error msg
"""
- return run_query(sql, show_error, con_args)
+ return run_query(sql, con_args, show_error)
# ------------------------------------------------------------------------------
@@ -234,7 +151,7 @@ def _run_sql_file(schema, maddir_mod_py, module, sqlfile,
# Check if the SQL file exists
if not os.path.isfile(sqlfile):
- _error("Missing module SQL file (%s)" % sqlfile, False)
+ error_(this, "Missing module SQL file (%s)" % sqlfile, False)
raise ValueError("Missing module SQL file (%s)" % sqlfile)
# Prepare the file using M4
@@ -261,12 +178,12 @@ def _run_sql_file(schema, maddir_mod_py, module, sqlfile,
'-I' + maddir_madpack,
sqlfile]
- _info("> ... parsing: " + " ".join(m4args), verbose)
+ info_(this, "> ... parsing: " + " ".join(m4args), verbose)
subprocess.call(m4args, stdout=f)
f.close()
except:
- _error("Failed executing m4 on %s" % sqlfile, False)
+ error_(this, "Failed executing m4 on %s" % sqlfile, False)
raise Exception
# Only update function definition
@@ -274,7 +191,7 @@ def _run_sql_file(schema, maddir_mod_py, module, sqlfile,
if upgrade:
# get filename from complete path without the extension
sub_module = os.path.splitext(os.path.basename(sqlfile))[0]
- _info(sub_module, False)
+ info_(this, sub_module, verbose)
if sub_module not in sc.get_change_handler().newmodule:
sql = open(tmpfile).read()
sql = sc.cleanup(sql)
@@ -287,7 +204,7 @@ def _run_sql_file(schema, maddir_mod_py, module, sqlfile,
std, err = subprocess.Popen(['which', sqlcmd], stdout=subprocess.PIPE,
stderr=subprocess.PIPE).communicate()
if not std:
- _error("Command not found: %s" % sqlcmd, True)
+ error_(this, "Command not found: %s" % sqlcmd, True)
runcmd = [sqlcmd, '-a',
'-v', 'ON_ERROR_STOP=1',
@@ -306,15 +223,15 @@ def _run_sql_file(schema, maddir_mod_py, module, sqlfile,
try:
log = open(logfile, 'w')
except:
- _error("Cannot create log file: %s" % logfile, False)
+ error_(this, "Cannot create log file: %s" % logfile, False)
raise Exception
# Run the SQL
try:
- _info("> ... executing " + tmpfile, verbose)
+ info_(this, "> ... executing " + tmpfile, verbose)
retval = subprocess.call(runcmd, env=runenv, stdout=log, stderr=log)
except:
- _error("Failed executing %s" % tmpfile, False)
+ error_(this, "Failed executing %s" % tmpfile, False)
raise Exception
finally:
log.close()
@@ -323,46 +240,6 @@ def _run_sql_file(schema, maddir_mod_py, module, sqlfile,
# ------------------------------------------------------------------------------
-def _get_madlib_dbrev(schema):
- """
- Read MADlib version from database
- @param dbconn database conection object
- @param schema MADlib schema name
- """
- try:
- row = _internal_run_query("SELECT count(*) AS cnt FROM pg_tables " +
- "WHERE schemaname='" + schema + "' AND " +
- "tablename='migrationhistory'", True)
- if int(row[0]['cnt']) > 0:
- row = _internal_run_query("""SELECT version FROM %s.migrationhistory
- ORDER BY applied DESC LIMIT 1""" % schema, True)
- if row:
- return row[0]['version']
- except:
- _error("Failed reading MADlib db version", True)
-
- return None
-# ------------------------------------------------------------------------------
-
-
-def _get_dbver():
- """ Read version number from database (of form X.Y) """
- try:
- versionStr = _internal_run_query("SELECT pg_catalog.version()", True)[0]['version']
- if portid == 'postgres':
- match = re.search("PostgreSQL[a-zA-Z\s]*(\d+\.\d+)", versionStr)
- elif portid == 'greenplum':
- # for Greenplum the 3rd digit is necessary to differentiate
- # 4.3.5+ from versions < 4.3.5
- match = re.search("Greenplum[a-zA-Z\s]*(\d+\.\d+\.\d+)", versionStr)
- elif portid == 'hawq':
- match = re.search("HAWQ[a-zA-Z\s]*(\d+\.\d+)", versionStr)
- return None if match is None else match.group(1)
- except:
- _error("Failed reading database version", True)
-# ------------------------------------------------------------------------------
-
-
def _check_db_port(portid):
"""
Make sure we are connected to the expected DB platform
@@ -372,7 +249,7 @@ def _check_db_port(portid):
try:
row = _internal_run_query("SELECT version() AS version", True)
except:
- _error("Cannot validate DB platform type", True)
+ error_(this, "Cannot validate DB platform type", True)
if row and row[0]['version'].lower().find(portid) >= 0:
if portid == 'postgres':
if row[0]['version'].lower().find('greenplum') < 0:
@@ -385,6 +262,7 @@ def _check_db_port(portid):
return False
# ------------------------------------------------------------------------------
+
def _print_revs(rev, dbrev, con_args, schema):
"""
Print version information
@@ -393,37 +271,38 @@ def _print_revs(rev, dbrev, con_args, schema):
@param con_args database connection arguments
@param schema MADlib schema name
"""
- _info("MADlib tools version = %s (%s)" % (str(rev), sys.argv[0]), True)
+ info_(this, "MADlib tools version = %s (%s)" % (str(rev), sys.argv[0]), True)
if con_args:
try:
- _info("MADlib database version = %s (host=%s, db=%s, schema=%s)"
+ info_(this, "MADlib database version = %s (host=%s, db=%s, schema=%s)"
% (dbrev, con_args['host'], con_args['database'], schema), True)
except:
- _info("MADlib database version = [Unknown] (host=%s, db=%s, schema=%s)"
+ info_(this, "MADlib database version = [Unknown] (host=%s, db=%s, schema=%s)"
% (dbrev, con_args['host'], con_args['database'], schema), True)
return
# ------------------------------------------------------------------------------
+
def _plpy_check(py_min_ver):
"""
Check pl/python existence and version
@param py_min_ver min Python version to run MADlib
"""
- _info("Testing PL/Python environment...", True)
+ info_(this, "Testing PL/Python environment...", True)
# Check PL/Python existence
rv = _internal_run_query("SELECT count(*) AS CNT FROM pg_language "
"WHERE lanname = 'plpythonu'", True)
if int(rv[0]['cnt']) > 0:
- _info("> PL/Python already installed", verbose)
+ info_(this, "> PL/Python already installed", verbose)
else:
- _info("> PL/Python not installed", verbose)
- _info("> Creating language PL/Python...", True)
+ info_(this, "> PL/Python not installed", verbose)
+ info_(this, "> Creating language PL/Python...", True)
try:
_internal_run_query("CREATE LANGUAGE plpythonu;", True)
except:
- _error("""Cannot create language plpythonu. Please check if you
+ error_(this, """Cannot create language plpythonu. Please check if you
have configured and installed portid (your platform) with
`--with-python` option. Stopping installation...""", False)
raise Exception
@@ -444,13 +323,13 @@ def _plpy_check(py_min_ver):
python = rv[0]['ver']
py_cur_ver = [int(i) for i in python.split('.')]
if py_cur_ver >= py_min_ver:
- _info("> PL/Python version: %s" % python, verbose)
+ info_(this, "> PL/Python version: %s" % python, verbose)
else:
- _error("PL/Python version too old: %s. You need %s or greater"
+ error_(this, "PL/Python version too old: %s. You need %s or greater"
% (python, '.'.join(str(i) for i in py_min_ver)), False)
raise Exception
_internal_run_query("DROP FUNCTION IF EXISTS plpy_version_for_madlib();", False)
- _info("> PL/Python environment OK (version: %s)" % python, True)
+ info_(this, "> PL/Python environment OK (version: %s)" % python, True)
# ------------------------------------------------------------------------------
@@ -461,7 +340,7 @@ def _db_install(schema, dbrev, testcase):
@param dbrev DB-level MADlib version
@param testcase command-line args for a subset of modules
"""
- _info("Installing MADlib into %s schema..." % schema.upper(), True)
+ info_(this, "Installing MADlib into %s schema..." % schema.upper(), True)
temp_schema = schema + '_v' + ''.join(map(str, get_rev_num(dbrev)))
# Check the status of MADlib objects in database
@@ -478,32 +357,37 @@ def _db_install(schema, dbrev, testcase):
if schema_writable and madlib_exists:
# work-around before UDT is available in HAWQ
if portid == 'hawq':
- _info("***************************************************************************", True)
- _info("* Schema MADLIB already exists", True)
- _info("* For HAWQ, MADlib objects will be overwritten to the 'MADLIB' schema", True)
- _info("* It may drop any database objects (tables, views, etc.) that depend on 'MADLIB' SCHEMA!!!!!!!!!!!!!", True)
- _info("***************************************************************************", True)
- _info("Would you like to continue? [Y/N]", True)
+ hawq_overwrite_msg = (
+ "***************************************************************************"
+ "* Schema MADLIB already exists"
+ "* MADlib objects will be overwritten to the 'MADLIB' schema"
+ "* It may drop any database objects (tables, views, etc.) that depend on 'MADLIB' SCHEMA"
+ "***************************************************************************"
+ "Would you like to continue? [Y/N]")
+ info_(this, hawq_overwrite_msg)
go = raw_input('>>> ').upper()
while go not in ('Y', 'YES', 'N', 'NO'):
go = raw_input('Yes or No >>> ').upper()
if go in ('N', 'NO'):
- _info('Installation stopped.', True)
+ info_(this, 'Installation stopped.', True)
return
# Rolling back in HAWQ will drop catalog functions. For exception, we
# simply push the exception to the caller to terminate the install
_db_create_objects(schema, None, testcase=testcase, hawq_debug=True)
else:
- _info("***************************************************************************", True)
- _info("* Schema %s already exists" % schema.upper(), True)
- _info("* Installer will rename it to %s" % temp_schema.upper(), True)
- _info("***************************************************************************", True)
- _info("Would you like to continue? [Y/N]", True)
+ schema_overwrite_msg = (
+ "***************************************************************************"
+ "* Schema {0} already exists"
+ "* Installer will rename it to {1}"
+ "***************************************************************************"
+ "Would you like to continue? [Y/N]".
+ format(schema.upper(), temp_schema.upper()))
+ info_(this, schema_overwrite_msg)
go = raw_input('>>> ').upper()
while go not in ('Y', 'YES', 'N', 'NO'):
go = raw_input('Yes or No >>> ').upper()
if go in ('N', 'NO'):
- _info('Installation stopped.', True)
+ info_(this, 'Installation stopped.', True)
return
# Rename MADlib schema
@@ -529,7 +413,7 @@ def _db_install(schema, dbrev, testcase):
try:
_db_create_objects(schema, None, testcase=testcase)
except:
- _error("Building database objects failed. "
+ error_(this, "Building database objects failed. "
"Before retrying: drop %s schema OR install MADlib into "
"a different schema." % schema.upper(), True)
@@ -542,7 +426,7 @@ def _db_install(schema, dbrev, testcase):
# simply push the exception to the caller to terminate the install
raise Exception("MADLIB schema is required for HAWQ")
- _info("> Schema %s does not exist" % schema.upper(), verbose)
+ info_(this, "> Schema %s does not exist" % schema.upper(), verbose)
# Create MADlib schema
try:
@@ -556,7 +440,7 @@ def _db_install(schema, dbrev, testcase):
except:
_db_rollback(schema, None)
- _info("MADlib %s installed successfully in %s schema." % (str(rev), schema.upper()), True)
+ info_(this, "MADlib %s installed successfully in %s schema." % (str(rev), schema.upper()))
# ------------------------------------------------------------------------------
@@ -567,37 +451,37 @@ def _db_upgrade(schema, dbrev):
@param dbrev DB-level MADlib version
"""
if is_rev_gte(get_rev_num(dbrev), get_rev_num(rev)):
- _info("Current MADlib version already up to date.", True)
+ info_(this, "Current MADlib version already up to date.", True)
return
- if is_rev_gte([1,9],get_rev_num(dbrev)):
- _error("""
- MADlib versions prior to v1.9.1 are not supported for upgrade.
- Please try upgrading to v1.9.1 and then upgrade to this version.
+ if is_rev_gte(get_rev_num('1.9.1'), get_rev_num(dbrev)):
+ error_(this, """
+ MADlib versions prior to v1.10 are not supported for upgrade.
+ Please try upgrading to v1.10 and then upgrade to this version.
""", True)
return
- _info("Upgrading MADlib into %s schema..." % schema.upper(), True)
- _info("\tDetecting dependencies...", True)
+ info_(this, "Upgrading MADlib into %s schema..." % schema.upper(), True)
+ info_(this, "\tDetecting dependencies...", True)
- _info("\tLoading change list...", True)
+ info_(this, "\tLoading change list...", True)
ch = uu.ChangeHandler(schema, portid, con_args, maddir, dbrev, is_hawq2)
- _info("\tDetecting table dependencies...", True)
+ info_(this, "\tDetecting table dependencies...", True)
td = uu.TableDependency(schema, portid, con_args)
- _info("\tDetecting view dependencies...", True)
+ info_(this, "\tDetecting view dependencies...", True)
vd = uu.ViewDependency(schema, portid, con_args)
abort = False
if td.has_dependency():
- _info("*" * 50, True)
- _info("\tFollowing user tables/indexes are dependent on MADlib objects:", True)
- _info(td.get_dependency_str(), True)
- _info("*" * 50, True)
+ info_(this, "*" * 50, True)
+ info_(this, "\tFollowing user tables/indexes are dependent on MADlib objects:", True)
+ info_(this, td.get_dependency_str(), True)
+ info_(this, "*" * 50, True)
cd_udt = [udt for udt in td.get_depended_udt() if udt in ch.udt]
if len(cd_udt) > 0:
- _error("""
+ error_(this, """
User has objects dependent on following updated MADlib types!
{0}
These objects need to be dropped before upgrading.
@@ -605,7 +489,7 @@ def _db_upgrade(schema, dbrev):
# we add special handling for 'linregr_result'
if 'linregr_result' in cd_udt:
- _info("""Dependency on 'linregr_result' could be due to objects
+ info_(this, """Dependency on 'linregr_result' could be due to objects
created from the output of the aggregate 'linregr'.
Please refer to the Linear Regression documentation
<http://madlib.apache.org/docs/latest/group__grp__linreg.html#warning>
@@ -617,7 +501,7 @@ def _db_upgrade(schema, dbrev):
d_udoc = td.get_depended_udoc_oids()
cd_udoc = [udoc for udoc in d_udoc if udoc in c_udoc]
if len(cd_udoc) > 0:
- _error("""
+ error_(this, """
User has objects dependent on the following updated MADlib operator classes!
oid={0}
These objects need to be dropped before upgrading.
@@ -625,16 +509,16 @@ def _db_upgrade(schema, dbrev):
abort = True
if vd.has_dependency():
- _info("*" * 50, True)
- _info("\tFollowing user views are dependent on MADlib objects:", True)
- _info(vd.get_dependency_graph_str(), True)
- _info("*" * 50, True)
+ info_(this, "*" * 50, True)
+ info_(this, "\tFollowing user views are dependent on MADlib objects:", True)
+ info_(this, vd.get_dependency_graph_str(), True)
+ info_(this, "*" * 50, True)
c_udf = ch.get_udf_signature()
d_udf = vd.get_depended_func_signature('UDF')
cd_udf = [udf for udf in d_udf if udf in c_udf]
if len(cd_udf) > 0:
- _error("""
+ error_(this, """
User has objects dependent on following updated MADlib functions!
{0}
These objects will fail to work with the updated functions and
@@ -646,7 +530,7 @@ def _db_upgrade(schema, dbrev):
d_uda = vd.get_depended_func_signature('UDA')
cd_uda = [uda for uda in d_uda if uda in c_uda]
if len(cd_uda) > 0:
- _error("""
+ error_(this, """
User has objects dependent on following updated MADlib aggregates!
{0}
These objects will fail to work with the new aggregates and
@@ -658,7 +542,7 @@ def _db_upgrade(schema, dbrev):
d_udo = vd.get_depended_opr_oids()
cd_udo = [udo for udo in d_udo if udo in c_udo]
if len(cd_udo) > 0:
- _error("""
+ error_(this, """
User has objects dependent on following updated MADlib operators!
oid={0}
These objects will fail to work with the new operators and
@@ -667,15 +551,15 @@ def _db_upgrade(schema, dbrev):
abort = True
if abort:
- _error("""------- Upgrade aborted. -------
+ error_(this, """------- Upgrade aborted. -------
Backup and drop all objects that depend on MADlib before trying upgrade again.
Use madpack reinstall to automatically drop these objects only if appropriate.""", True)
else:
- _info("No dependency problem found, continuing to upgrade ...", True)
+ info_(this, "No dependency problem found, continuing to upgrade ...", True)
- _info("\tReading existing UDAs/UDTs...", False)
+ info_(this, "\tReading existing UDAs/UDTs...", False)
sc = uu.ScriptCleaner(schema, portid, con_args, ch)
- _info("Script Cleaner initialized ...", False)
+ info_(this, "Script Cleaner initialized ...", False)
ch.drop_changed_uda()
ch.drop_changed_udoc()
@@ -686,7 +570,7 @@ def _db_upgrade(schema, dbrev):
ch.drop_traininginfo_4dt() # used types: oid, text, integer, float
_db_create_objects(schema, None, True, sc)
- _info("MADlib %s upgraded successfully in %s schema." % (str(rev), schema.upper()), True)
+ info_(this, "MADlib %s upgraded successfully in %s schema." % (str(rev), schema.upper()), True)
# ------------------------------------------------------------------------------
@@ -697,11 +581,11 @@ def _db_rename_schema(from_schema, to_schema):
@param to_schema new name for the schema
"""
- _info("> Renaming schema %s to %s" % (from_schema.upper(), to_schema.upper()), True)
+ info_(this, "> Renaming schema %s to %s" % (from_schema.upper(), to_schema.upper()), True)
try:
_internal_run_query("ALTER SCHEMA %s RENAME TO %s;" % (from_schema, to_schema), True)
except:
- _error('Cannot rename schema. Stopping installation...', False)
+ error_(this, 'Cannot rename schema. Stopping installation...', False)
raise Exception
# ------------------------------------------------------------------------------
@@ -713,11 +597,11 @@ def _db_create_schema(schema):
@param to_schema new name for the schema
"""
- _info("> Creating %s schema" % schema.upper(), True)
+ info_(this, "> Creating %s schema" % schema.upper(), True)
try:
_internal_run_query("CREATE SCHEMA %s;" % schema, True)
except:
- _info('Cannot create new schema. Rolling back installation...', True)
+ info_(this, 'Cannot create new schema. Rolling back installation...', True)
pass
# ------------------------------------------------------------------------------
@@ -735,42 +619,42 @@ def _db_create_objects(schema, old_schema, upgrade=False, sc=None, testcase="",
if not upgrade and not hawq_debug:
# Create MigrationHistory table
try:
- _info("> Creating %s.MigrationHistory table" % schema.upper(), True)
+ info_(this, "> Creating %s.MigrationHistory table" % schema.upper(), True)
_internal_run_query("DROP TABLE IF EXISTS %s.migrationhistory;" % schema, True)
sql = """CREATE TABLE %s.migrationhistory
(id serial, version varchar(255),
applied timestamp default current_timestamp);""" % schema
_internal_run_query(sql, True)
except:
- _error("Cannot crate MigrationHistory table", False)
+ error_(this, "Cannot crate MigrationHistory table", False)
raise Exception
# Copy MigrationHistory table for record keeping purposes
if old_schema:
try:
- _info("> Saving data from %s.MigrationHistory table" % old_schema.upper(), True)
+ info_(this, "> Saving data from %s.MigrationHistory table" % old_schema.upper(), True)
sql = """INSERT INTO %s.migrationhistory (version, applied)
SELECT version, applied FROM %s.migrationhistory
ORDER BY id;""" % (schema, old_schema)
_internal_run_query(sql, True)
except:
- _error("Cannot copy MigrationHistory table", False)
+ error_(this, "Cannot copy MigrationHistory table", False)
raise Exception
# Stamp the DB installation
try:
- _info("> Writing version info in MigrationHistory table", True)
+ info_(this, "> Writing version info in MigrationHistory table", True)
_internal_run_query("INSERT INTO %s.migrationhistory(version) "
"VALUES('%s')" % (schema, str(rev)), True)
except:
- _error("Cannot insert data into %s.migrationhistory table" % schema, False)
+ error_(this, "Cannot insert data into %s.migrationhistory table" % schema, False)
raise Exception
# Run migration SQLs
if upgrade:
- _info("> Creating/Updating objects for modules:", True)
+ info_(this, "> Creating/Updating objects for modules:", True)
else:
- _info("> Creating objects for modules:", True)
+ info_(this, "> Creating objects for modules:", True)
caseset = (set([test.strip() for test in testcase.split(',')])
if testcase != "" else set())
@@ -797,7 +681,7 @@ def _db_create_objects(schema, old_schema, upgrade=False, sc=None, testcase="",
if modset is not None and len(modset) > 0 and module not in modset:
continue
- _info("> - %s" % module, True)
+ info_(this, "> - %s" % module, True)
# Find the Python module dir (platform specific or generic)
if os.path.isdir(maddir + "/ports/" + portid + "/" + dbver + "/modules/" + module):
@@ -824,7 +708,7 @@ def _db_create_objects(schema, old_schema, upgrade=False, sc=None, testcase="",
sql_files = glob.glob(mask)
if not sql_files:
- _error("No files found in: %s" % mask, True)
+ error_(this, "No files found in: %s" % mask, True)
# Execute all SQL files for the module
for sqlfile in sql_files:
@@ -845,8 +729,8 @@ def _db_create_objects(schema, old_schema, upgrade=False, sc=None, testcase="",
sc)
# Check the exit status
if retval != 0:
- _error("TEST CASE RESULTed executing %s" % tmpfile, False)
- _error("Check the log at %s" % logfile, False)
+ error_(this, "TEST CASE RESULTed executing %s" % tmpfile, False)
+ error_(this, "Check the log at %s" % logfile, False)
raise Exception
# ------------------------------------------------------------------------------
@@ -857,23 +741,23 @@ def _db_rollback(drop_schema, keep_schema):
@param drop_schema name of the schema to drop
@param keep_schema name of the schema to rename and keep
"""
- _info("Rolling back the installation...", True)
+ info_(this, "Rolling back the installation...", True)
if not drop_schema:
- _error('No schema name to drop. Stopping rollback...', True)
+ error_(this, 'No schema name to drop. Stopping rollback...', True)
# Drop the current schema
- _info("> Dropping schema %s" % drop_schema.upper(), verbose)
+ info_(this, "> Dropping schema %s" % drop_schema.upper(), verbose)
try:
_internal_run_query("DROP SCHEMA %s CASCADE;" % (drop_schema), True)
except:
- _error("Cannot drop schema %s. Stopping rollback..." % drop_schema.upper(), True)
+ error_(this, "Cannot drop schema %s. Stopping rollback..." % drop_schema.upper(), True)
# Rename old to current schema
if keep_schema:
_db_rename_schema(keep_schema, drop_schema)
- _info("Rollback finished successfully.", True)
+ info_(this, "Rollback finished successfully.", True)
raise Exception
# ------------------------------------------------------------------------------
@@ -984,7 +868,7 @@ def main(argv):
global verbose
verbose = args.verbose
- _info("Arguments: " + str(args), verbose)
+ info_(this, "Arguments: " + str(args), verbose)
global keeplogs
keeplogs = args.keeplogs
@@ -993,7 +877,7 @@ def main(argv):
tmpdir = tempfile.mkdtemp('', 'madlib.', args.tmpdir)
except OSError, e:
tmpdir = e.filename
- _error("cannot create temporary directory: '%s'." % tmpdir, True)
+ error_(this, "cannot create temporary directory: '%s'." % tmpdir, True)
# Parse SCHEMA
if len(args.schema[0]) > 1:
@@ -1010,7 +894,7 @@ def main(argv):
ports[portid]
except:
portid = None
- _error("Can not find specs for port %s" % (args.platform[0]), True)
+ error_(this, "Can not find specs for port %s" % (args.platform[0]), True)
else:
portid = None
@@ -1041,7 +925,7 @@ def main(argv):
con_args['password'] = c_pass
# Try connecting to the database
- _info("Testing database connection...", verbose)
+ info_(this, "Testing database connection...", verbose)
try:
# check for password only if required
@@ -1050,11 +934,11 @@ def main(argv):
con_args['password'] = getpass.getpass("Password for user %s: " % c_user)
_internal_run_query("SELECT 1", False)
except:
- _error('Failed to connect to database', True)
+ error_(this, 'Failed to connect to database', True)
# Get DB version
global dbver
- dbver = _get_dbver()
+ dbver = get_dbver(con_args, portid)
global is_hawq2
if portid == "hawq" and is_rev_gte(get_rev_num(dbver), get_rev_num('2.0')):
is_hawq2 = True
@@ -1063,14 +947,14 @@ def main(argv):
# HAWQ < 2.0 has hard-coded schema name 'madlib'
if portid == 'hawq' and not is_hawq2 and schema.lower() != 'madlib':
- _error("*** Installation is currently restricted only to 'madlib' schema ***", True)
+ error_(this, "*** Installation is currently restricted only to 'madlib' schema ***", True)
# update maddir to use a relative path if available
global maddir
maddir = _get_relative_maddir(maddir, portid)
# Get MADlib version in DB
- dbrev = _get_madlib_dbrev(schema)
+ dbrev = get_madlib_dbrev(con_args, schema)
portdir = os.path.join(maddir, "ports", portid)
supportedVersions = [dirItem for dirItem in os.listdir(portdir)
@@ -1080,12 +964,12 @@ def main(argv):
dbver = ".".join(
map(str, max([versionStr.split('.')
for versionStr in supportedVersions])))
- _info("Could not parse version string reported by {DBMS}. Will "
+ info_(this, "Could not parse version string reported by {DBMS}. Will "
"default to newest supported version of {DBMS} "
"({version}).".format(DBMS=ports[portid]['name'],
version=dbver), True)
else:
- _info("Detected %s version %s." % (ports[portid]['name'], dbver),
+ info_(this, "Detected %s version %s." % (ports[portid]['name'], dbver),
True)
dbver_split = get_rev_num(dbver)
@@ -1108,20 +992,20 @@ def main(argv):
dbver = '4.3ORCA'
else:
# only need the first two digits for <= 4.3.4
- dbver = '.'.join(dbver_split[:2])
+ dbver = '.'.join(map(str, dbver_split[:2]))
elif portid == 'postgres':
if is_rev_gte(dbver_split, get_rev_num('10.0')):
# Postgres starting 10.0 uses semantic versioning. Hence,
# only need first digit for major version.
dbver = str(dbver_split[0])
if not os.path.isdir(os.path.join(portdir, dbver)):
- _error("This version is not among the %s versions for which "
+ error_(this, "This version is not among the %s versions for which "
"MADlib support files have been installed (%s)." %
(ports[portid]['name'], ", ".join(supportedVersions)), True)
# Validate that db platform is correct
if not _check_db_port(portid):
- _error("Invalid database platform specified.", True)
+ error_(this, "Invalid database platform specified.", True)
# Adjust MADlib directories for this port (if they exist)
global maddir_conf
@@ -1153,9 +1037,9 @@ def main(argv):
# Make sure we have the necessary parameters to continue
if args.command[0] != 'version':
if not portid:
- _error("Missing -p/--platform parameter.", True)
+ error_(this, "Missing -p/--platform parameter.", True)
if not con_args:
- _error("Unknown problem with database connection string: %s" % con_args, True)
+ error_(this, "Unknown problem with database connection string: %s" % con_args, True)
# COMMAND: version
if args.command[0] == 'version':
@@ -1163,11 +1047,11 @@ def main(argv):
# COMMAND: uninstall/reinstall
if args.command[0] in ('uninstall',) and (portid == 'hawq' and not is_hawq2):
- _error("madpack uninstall is currently not available for HAWQ", True)
+ error_(this, "madpack uninstall is currently not available for HAWQ", True)
if args.command[0] in ('uninstall', 'reinstall') and (portid != 'hawq' or is_hawq2):
if get_rev_num(dbrev) == [0]:
- _info("Nothing to uninstall. No version found in schema %s." % schema.upper(), True)
+ info_(this, "Nothing to uninstall. No version found in schema %s." % schema.upper(), True)
return
# Find any potential data to lose
@@ -1193,34 +1077,34 @@ def main(argv):
ORDER BY
n1.nspname, relname, attname, typname""" % schema.lower(), True)
- _info("*** Uninstalling MADlib ***", True)
- _info("***********************************************************************************", True)
- _info("* Schema %s and all database objects depending on it will be dropped!" % schema.upper(), True)
+ info_(this, "*** Uninstalling MADlib ***", True)
+ info_(this, "***********************************************************************************", True)
+ info_(this, "* Schema %s and all database objects depending on it will be dropped!" % schema.upper(), True)
if affected_objects:
- _info("* If you continue the following data will be lost (schema : table.column : type):", True)
+ info_(this, "* If you continue the following data will be lost (schema : table.column : type):", True)
for ao in affected_objects:
- _info('* - ' + ao['schema'] + ' : ' + ao['relation'] + '.' +
+ info_(this, '* - ' + ao['schema'] + ' : ' + ao['relation'] + '.' +
ao['column'] + ' : ' + ao['type'], True)
- _info("***********************************************************************************", True)
- _info("Would you like to continue? [Y/N]", True)
+ info_(this, "***********************************************************************************", True)
+ info_(this, "Would you like to continue? [Y/N]", True)
go = raw_input('>>> ').upper()
while go != 'Y' and go != 'N':
go = raw_input('Yes or No >>> ').upper()
# 2) Do the uninstall/drop
if go == 'N':
- _info('No problem. Nothing dropped.', True)
+ info_(this, 'No problem. Nothing dropped.', True)
return
elif go == 'Y':
- _info("> dropping schema %s" % schema.upper(), verbose)
+ info_(this, "> dropping schema %s" % schema.upper(), verbose)
try:
_internal_run_query("DROP SCHEMA %s CASCADE;" % (schema), True)
except:
- _error("Cannot drop schema %s." % schema.upper(), True)
+ error_(this, "Cannot drop schema %s." % schema.upper(), True)
- _info('Schema %s (and all dependent objects) has been dropped.' % schema.upper(), True)
- _info('MADlib uninstalled successfully.', True)
+ info_(this, 'Schema %s (and all dependent objects) has been dropped.' % schema.upper(), True)
+ info_(this, 'MADlib uninstalled successfully.', True)
else:
return
@@ -1232,20 +1116,20 @@ def main(argv):
print "Setting MADlib database version to be None for reinstall"
dbrev = None
- _info("*** Installing MADlib ***", True)
+ info_(this, "*** Installing MADlib ***", True)
# 1) Compare OS and DB versions.
# noop if OS <= DB.
_print_revs(rev, dbrev, con_args, schema)
if is_rev_gte(get_rev_num(dbrev), get_rev_num(rev)):
- _info("Current MADlib version already up to date.", True)
+ info_(this, "Current MADlib version already up to date.", True)
return
# proceed to create objects if nothing installed in DB or for HAWQ < 2.0
elif dbrev is None or (portid == 'hawq' and not is_hawq2):
pass
# error and refer to upgrade if OS > DB
else:
- _error("""Aborting installation: existing MADlib version detected in {0} schema
+ error_(this, """Aborting installation: existing MADlib version detected in {0} schema
To upgrade the {0} schema to MADlib v{1} please run the following command:
madpack upgrade -s {0} -p {2} [-c ...]
""".format(schema, rev, portid), True)
@@ -1255,16 +1139,16 @@ def main(argv):
_plpy_check(py_min_ver)
_db_install(schema, dbrev, args.testcase)
except:
- _error("MADlib installation failed.", True)
+ error_(this, "MADlib installation failed.", True)
# COMMAND: upgrade
if args.command[0] in ('upgrade', 'update'):
- _info("*** Upgrading MADlib ***", True)
- dbrev = _get_madlib_dbrev(schema)
+ info_(this, "*** Upgrading MADlib ***", True)
+ dbrev = get_madlib_dbrev(con_args, schema)
# 1) Check DB version. If None, nothing to upgrade.
if not dbrev:
- _info("MADlib is not installed in {schema} schema and there "
+ info_(this, "MADlib is not installed in {schema} schema and there "
"is nothing to upgrade. Please use install "
"instead.".format(schema=schema.upper()),
True)
@@ -1273,11 +1157,11 @@ def main(argv):
# 2) Compare OS and DB versions. Continue if OS > DB.
_print_revs(rev, dbrev, con_args, schema)
if is_rev_gte(get_rev_num(dbrev), get_rev_num(rev)):
- _info("Current MADlib version is already up-to-date.", True)
+ info_(this, "Current MADlib version is already up-to-date.", True)
return
if float('.'.join(dbrev.split('.')[0:2])) < 1.0:
- _info("The version gap is too large, upgrade is supported only for "
+ info_(this, "The version gap is too large, upgrade is supported only for "
"packages greater than or equal to v1.0.", True)
return
@@ -1290,7 +1174,7 @@ def main(argv):
print "Exception: " + str(e)
print sys.exc_info()
traceback.print_tb(sys.exc_info()[2])
- _error("MADlib upgrade failed.", True)
+ error_(this, "MADlib upgrade failed.", True)
# COMMAND: install-check
if args.command[0] == 'install-check':
@@ -1298,7 +1182,7 @@ def main(argv):
# 1) Compare OS and DB versions. Continue if OS = DB.
if get_rev_num(dbrev) != get_rev_num(rev):
_print_revs(rev, dbrev, con_args, schema)
- _info("Versions do not match. Install-check stopped.", True)
+ info_(this, "Versions do not match. Install-check stopped.", True)
return
# Create install-check user
@@ -1315,7 +1199,7 @@ def main(argv):
_internal_run_query("GRANT USAGE ON SCHEMA %s TO %s;" % (schema, test_user), True)
# 2) Run test SQLs
- _info("> Running test scripts for:", verbose)
+ info_(this, "> Running test scripts for:", verbose)
caseset = (set([test.strip() for test in args.testcase.split(',')])
if args.testcase != "" else set())
@@ -1345,7 +1229,7 @@ def main(argv):
# We can still run install-check on pmml with '-t' option.
if not modset and module in ['pmml']:
continue
- _info("> - %s" % module, verbose)
+ info_(this, "> - %s" % module, verbose)
# Make a temp dir for this module (if doesn't exist)
cur_tmpdir = tmpdir + '/' + module + '/test' # tmpdir is a global variable
@@ -1421,8 +1305,8 @@ def main(argv):
"|Time: %d milliseconds" % (milliseconds)
if result == 'FAIL':
- _error("Failed executing %s" % tmpfile, False)
- _error("Check the log at %s" % logfile, False)
+ error_(this, "Failed executing %s" % tmpfile, False)
+ error_(this, "Check the log at %s" % logfile, False)
# Cleanup test schema for the module
_internal_run_query("DROP SCHEMA IF EXISTS %s CASCADE;" % (test_schema), True)