Github user kaknikhil commented on a diff in the pull request:
https://github.com/apache/madlib/pull/318#discussion_r217842739
--- Diff: src/madpack/create_changelist.py ---
@@ -0,0 +1,239 @@
+#!/usr/bin/python
+#
------------------------------------------------------------------------------
+# 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.
+#
------------------------------------------------------------------------------
+
+# Create changelist for any two branches/tags
+
+# Prequisites:
+# The old version has to be installed in the "madlib_old_vers" schema
+# The new version has to be installed in the "madlib" (default) schema
+# Two branches/tags must exist locally (run 'git fetch' to ensure you have
the latest version)
+# The current branch does not matter
+
+# Usage (must be executed in the src/madpack directory):
+# python create_changelist.py <database name> <old version branch> <new
version branch> <changelist filename>
+# If you are using the master branch, plase make sure to edit the
branch/tag in the output file
+
+# Example (should be equivalent to changelist_1.13_1.14.yaml):
+# python create_changelist.py madlib rel/v1.13 rel/v1.14 chtest1.yaml
+
+import sys
+import os
+
+database = sys.argv[1]
+old_vers = sys.argv[2]
+new_vers = sys.argv[3]
+ch_filename = sys.argv[4]
+
+if os.path.exists(ch_filename):
+ print "{0} already exists".format(ch_filename)
+ raise SystemExit
+
+err1 = os.system("""psql {0} -l > /dev/null""".format(database))
+if err1 != 0:
+ print "Database {0} does not exist".format(database)
+ raise SystemExit
+
+err1 = os.system("""psql {0} -c "select madlib_old_vers.version()" >
/dev/null
+ """.format(database))
+if err1 != 0:
+ print "MADlib is not installed in the madlib_old_vers schema. Please
refer to the Prequisites."
+ raise SystemExit
+
+err1 = os.system("""psql {0} -c "select madlib.version()" > /dev/null
+ """.format(database))
+if err1 != 0:
+ print "MADlib is not installed in the madlib schema. Please refer to
the Prequisites."
+ raise SystemExit
+
+print "Creating changelist {0}".format(ch_filename)
+os.system("rm -f /tmp/madlib_tmp_nm.txt /tmp/madlib_tmp_udf.txt
/tmp/madlib_tmp_udt.txt")
+try:
+ # Find the new modules using the git diff
+ err1 = os.system("git diff {old_vers} {new_vers} --name-only
--diff-filter=A > /tmp/madlib_tmp_nm.txt".format(**locals()))
+ if err1 != 0:
+ print "Git diff failed. Please ensure that branches/tags are
fetched."
+ raise SystemExit
+
+ f = open("/tmp/madlib_tmp_cl.yaml", "w")
+ f.write(
+"""#
------------------------------------------------------------------------------
+# 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.
+#
------------------------------------------------------------------------------
+""")
+
+ f.write(
+ """
+# Changelist for MADlib version {old_vers} to {new_vers}
+
+# 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
+""".format(**locals()))
+
+ # Find the new .sql_in files that are not in test folders
+ f.write("new module:\n")
+ with open('/tmp/madlib_tmp_nm.txt') as fp:
+ for line in fp:
+ if 'sql_in' in line and '/test/' not in line:
+ f.write(' ' + line.split('/')[5].split('.')[0]+':\n')
+
+ # Find the changed types and keep a list for future use
+ os.system("psql {0} -f diff_udt.sql >
/tmp/madlib_tmp_udt.txt".format(database))
+
+ f.write("\n# Changes in the types (UDT) including removal and
modification\n")
+ f.write("udt:\n")
+ udt_list=[]
+ with open('/tmp/madlib_tmp_udt.txt') as fp:
+ for line in fp:
+ if 'UDT' in line and '[]' not in line:
--- End diff --
Can we add a comment explaining the condition in this if check ?
---