--- 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 ########################################
--- 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: