[svn-commits] kharwell: trunk r407574 - in /trunk: ./ contrib/ast-db-manage/config/versions/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Thu Feb 6 12:11:36 CST 2014


Author: kharwell
Date: Thu Feb  6 12:11:34 2014
New Revision: 407574

URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=407574
Log:
pjsip realtime: already created enum failure for postgresql

If an enum had been previously created the alembic script would attempt to
re-create it and an error would be generated while running migrations for a
postgresql server.  The work around for this is to use the ENUM object type
for postgres as opposed to the generic enum type used by sqlalchemy. Using
this type in the script seems to work properly for both postgres and mysql.
........

Merged revisions 407572 from http://svn.asterisk.org/svn/asterisk/branches/12

Modified:
    trunk/   (props changed)
    trunk/contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py

Propchange: trunk/
------------------------------------------------------------------------------
Binary property 'branch-12-merged' - no diff available.

Modified: trunk/contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py
URL: http://svnview.digium.com/svn/asterisk/trunk/contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py?view=diff&rev=407574&r1=407573&r2=407574
==============================================================================
--- trunk/contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py (original)
+++ trunk/contrib/ast-db-manage/config/versions/2fc7930b41b3_add_pjsip_endpoint_options_for_12_1.py Thu Feb  6 12:11:34 2014
@@ -12,6 +12,7 @@
 
 from alembic import op
 import sqlalchemy as sa
+from sqlalchemy.dialects.postgresql import ENUM
 
 YESNO_NAME = 'yesno_values'
 YESNO_VALUES = ['yes', 'no']
@@ -26,20 +27,12 @@
 PJSIP_TRANSPORT_PROTOCOL_NAME = 'pjsip_transport_protocol_values'
 PJSIP_TRANSPORT_PROTOCOL_VALUES = ['udp', 'tcp', 'tls', 'ws', 'wss']
 
-def create_enum(name, check_first, *args):
-    """Create an enumeration with the given name."""
-    res = sa.Enum(*args, name=name)
-    res.create(op.get_bind(), checkfirst=check_first)
-    return res
-
-def drop_enum(name):
-    """Drop the named enumeration from the database."""
-    sa.Enum(name=name).drop(op.get_bind(), checkfirst=False)
-
 def upgrade():
     ############################# Enums ##############################
 
-    yesno_values = sa.Enum(*YESNO_VALUES, name=YESNO_NAME)
+    # yesno_values have already been created, so use postgres enum object
+    # type to get around "already created" issue - works okay with mysql
+    yesno_values = ENUM(*YESNO_VALUES, name=YESNO_NAME, create_type=False)
 
     # for some reason when using 'add_column' if you don't create the enum
     # first it will think it already exists and fail




More information about the svn-commits mailing list