You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by od...@apache.org on 2017/02/15 02:20:19 UTC

incubator-hawq git commit: HAWQ-1314. Added upgrade for function pxf_get_item_fields.

Repository: incubator-hawq
Updated Branches:
  refs/heads/master 9a86ed8c9 -> 103373b7f


HAWQ-1314. Added upgrade for function pxf_get_item_fields.


Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/103373b7
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/103373b7
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/103373b7

Branch: refs/heads/master
Commit: 103373b7f7cfabef181bd624a6ceb4d6e5095954
Parents: 9a86ed8
Author: Oleksandr Diachenko <od...@pivotal.io>
Authored: Tue Feb 14 18:20:02 2017 -0800
Committer: Oleksandr Diachenko <od...@pivotal.io>
Committed: Tue Feb 14 18:20:16 2017 -0800

----------------------------------------------------------------------
 tools/bin/hawqupgrade | 48 +++++++++++++++++++++++++++++++++++++++++++---
 1 file changed, 45 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/103373b7/tools/bin/hawqupgrade
----------------------------------------------------------------------
diff --git a/tools/bin/hawqupgrade b/tools/bin/hawqupgrade
index a71f4d6..0352018 100755
--- a/tools/bin/hawqupgrade
+++ b/tools/bin/hawqupgrade
@@ -89,12 +89,52 @@ def register_func(options, args):
     except pg.DatabaseError as e:
         logger.error('%s', e)
         logger.info('Hawq Upgrade Failed.')
-        return 1
+        sys.exit(1)
     except pg.InternalError:
         logger.error('Fail to connect to database, this script can only be run when database is up.')
         logger.info('Hawq Upgrade Failed.')
-        return 1
-    logger.info('Hawq Upgrade Succeed.')
+        sys.exit(1)
+
+def pxf_get_item_fields_func(options, args):
+    # connect db
+    try:
+        url = dbconn.DbURL(hostname=options.host, port=options.port,
+                           dbname="template1", username=options.user)
+        utility_conn = pg.connect(dbname=url.pgdb, host=url.pghost, port=url.pgport,
+                                  user=url.pguser, passwd=url.pgpass, opt='-c gp_session_role=utility')
+
+
+        # update function for template1
+        update_func_query = """
+            SET allow_system_table_mods = 'dml';
+            UPDATE pg_proc
+            SET proallargtypes = '{25,25,25,25,25,25,25}',  proargmodes = '{i,i,o,o,o,o,o}',  proargnames = '{profile,pattern,path,itemname,fieldname,fieldtype,sourcefieldtype}'
+            WHERE proname = 'pxf_get_item_fields';
+            """
+
+        utility_conn.query(update_func_query)
+        logger.info('Function pxf_get_item_fields successfully updated into database template1.')
+         # pxf_get_item_fields function for other databases
+        query = """select datname from pg_database;"""
+        dbs = utility_conn.query(query).dictresult()
+        for cur_db in dbs:
+            if cur_db['datname'] not in ['template1', 'template0', 'hcatalog']:
+                url = dbconn.DbURL(hostname=options.host, port=options.port,
+                               dbname=cur_db['datname'], username=options.user)
+                existed_db_conn = pg.connect(dbname=cur_db['datname'], host=url.pghost,
+                                         port=url.pgport, user=url.pguser, passwd=url.pgpass)
+                existed_db_conn.query(update_func_query);
+                logger.info('Function pxf_get_item_fields successfully updated in database %s.',cur_db['datname'])
+                existed_db_conn.close()
+        utility_conn.close()
+    except pg.DatabaseError as e:
+        logger.error('%s', e)
+        logger.info('Hawq Upgrade Failed.')
+        sys.exit(1)
+    except pg.InternalError:
+        logger.error('Fail to connect to database, this script can only be run when database is up.')
+        logger.info('Hawq Upgrade Failed.')
+        sys.exit(1)
 
 if __name__ == '__main__':
     parser = option_parser()
@@ -103,3 +143,5 @@ if __name__ == '__main__':
         parser.print_help(sys.stderr)
         sys.exit(1)
     register_func(options, args)
+    pxf_get_item_fields_func(options, args)
+    logger.info('Hawq Upgrade Succeed.')
\ No newline at end of file