Increased the size of TEXT columns to store large object models

Object model is stored in database in the columns of type TEXT. In
MySQL database this type of column is limited by default and cannot
hold data structures which are large enough.

This patch adds an extra migration which alters appropriate columns in
database when the mysql is used. The column type is explicitly set to
LONGTEXT.

Change-Id: Ic04fb99469edc087cc12d4c78a983484ae49a6c1
Closes-bug: #1567863
This commit is contained in:
Alexander Tivelkov 2016-04-12 16:48:53 +03:00
parent 5459ec11da
commit 12636e2e12

View File

@ -0,0 +1,61 @@
# Copyright 2016 OpenStack Foundation.
#
# Licensed 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.
"""Increase the size of the text columns storing object model
Revision ID: 013
Revises: 012
Create Date: 2016-04-12 15:46:12.251155
"""
# revision identifiers, used by Alembic.
revision = '013'
down_revision = '012'
from alembic import op
import sqlalchemy as sa
import sqlalchemy.dialects.mysql as sa_mysql
MYSQL_ENGINE = 'InnoDB'
MYSQL_CHARSET = 'utf8'
def upgrade():
engine = op.get_bind()
if engine.dialect.dialect_description.startswith('mysql'):
with op.batch_alter_table('session') as batch_op:
batch_op.alter_column('description',
type_=sa_mysql.LONGTEXT())
with op.batch_alter_table('environment') as batch_op:
batch_op.alter_column('description',
type_=sa_mysql.LONGTEXT())
with op.batch_alter_table('environment-template') as batch_op:
batch_op.alter_column('description',
type_=sa_mysql.LONGTEXT())
def downgrade():
engine = op.get_bind()
if engine.dialect.dialect_description.startswith('mysql'):
with op.batch_alter_table('session') as batch_op:
batch_op.alter_column('description',
type_=sa.TEXT())
with op.batch_alter_table('environment') as batch_op:
batch_op.alter_column('description',
type_=sa.TEXT())
with op.batch_alter_table('environment-template') as batch_op:
batch_op.alter_column('description',
type_=sa.TEXT())