# HG changeset patch # User Adrien Di Mascio # Date 1307614570 -7200 # Node ID b0603fc4ed6dccb5f1dd916883687e31cfc50cb6 # Parent 9e213becdcf47069f13aa3ba9fe4408459ee63d5 [sql] implement #1631319: ask user before creating postgresql languages diff -r 9e213becdcf4 -r b0603fc4ed6d server/migractions.py --- a/server/migractions.py Thu Jun 09 10:32:34 2011 +0200 +++ b/server/migractions.py Thu Jun 09 12:16:10 2011 +0200 @@ -373,18 +373,21 @@ self.cmd_reactivate_verification_hooks() def install_custom_sql_scripts(self, directory, driver): + sql_scripts = [] for fpath in glob(osp.join(directory, '*.sql.%s' % driver)): newname = osp.basename(fpath).replace('.sql.%s' % driver, '.%s.sql' % driver) warn('[3.5.6] rename %s into %s' % (fpath, newname), DeprecationWarning) + sql_scripts.append(fpath) + sql_scripts += glob(osp.join(directory, '*.%s.sql' % driver)) + for fpath in sql_scripts: print '-> installing', fpath - sqlexec(open(fpath).read(), self.session.system_sql, False, - delimiter=';;') - for fpath in glob(osp.join(directory, '*.%s.sql' % driver)): - print '-> installing', fpath - sqlexec(open(fpath).read(), self.session.system_sql, False, - delimiter=';;') + try: + sqlexec(open(fpath).read(), self.session.system_sql, False, + delimiter=';;') + except Exception, exc: + print '-> ERROR:', exc, ', skipping', fpath # schema synchronization internals ######################################## diff -r 9e213becdcf4 -r b0603fc4ed6d server/serverctl.py --- a/server/serverctl.py Thu Jun 09 10:32:34 2011 +0200 +++ b/server/serverctl.py Thu Jun 09 12:16:10 2011 +0200 @@ -371,14 +371,21 @@ interactive=not automatic) cursor = cnx.cursor() helper.init_fti_extensions(cursor) + cnx.commit() # postgres specific stuff if driver == 'postgres': - # install plpythonu/plpgsql language if not installed by the cube - langs = sys.platform == 'win32' and ('plpgsql',) or ('plpythonu', 'plpgsql') + # install plpythonu/plpgsql languages + langs = ('plpythonu', 'plpgsql') for extlang in langs: - helper.create_language(cursor, extlang) - cursor.close() - cnx.commit() + if automatic or ASK.confirm('Create language %s ?' % extlang): + try: + helper.create_language(cursor, extlang) + except Exception, exc: + print '-> ERROR:', exc + print '-> could not create language %s, some stored procedures might be unusable' % extlang + cnx.rollback() + else: + cnx.commit() print '-> database for instance %s created and necessary extensions installed.' % appid print if automatic: