Skip to content

Commit

Permalink
Merge pull request #44 from gisce/bugfix/57394_fix_column_exist_only_…
Browse files Browse the repository at this point in the history
…in_public_schema

FIX metodo column_exists para casos de varios schemas
  • Loading branch information
polsala authored Jul 23, 2024
2 parents 7f856e4 + 18575a3 commit 4738392
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 15 deletions.
14 changes: 8 additions & 6 deletions oopgrade/oopgrade.py
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ def add_columns(cr, column_spec, multiple=True):
logger.info("table %s: add column %s",
table, column)
if column_exists(cr, table, column):
logger.warn("table %s: column %s already exists",
logger.warning("table %s: column %s already exists",
table, column)
else:
if multiple:
Expand Down Expand Up @@ -607,11 +607,13 @@ def column_exists(cr, table, column):
:rtype: bool
"""
cr.execute(
'SELECT count(attname) FROM pg_attribute '
'WHERE attrelid = '
'( SELECT oid FROM pg_class WHERE relname = %s ) '
'AND attname = %s',
(table, column));
'SELECT count(attname) FROM pg_attribute WHERE attrelid = ('
'SELECT oid FROM pg_class WHERE relname = %s AND relnamespace = ('
'SELECT oid FROM pg_namespace WHERE nspname = "public"'
') AND relkind = "r"'
') AND attname = %s',
(table, column)
)
return cr.fetchone()[0] == 1


Expand Down
20 changes: 11 additions & 9 deletions spec/data_migration_spec.py
Original file line number Diff line number Diff line change
Expand Up @@ -207,7 +207,7 @@ def callback():
*expected_sql
))
with description('Adding columns'):
with it('usign multiple at once'):
with it('using multiple at once'):
cursor = Mock()
cursor.fetchone.side_effect = [
[0], # No record for random1
Expand All @@ -221,16 +221,18 @@ def callback():
}
add_columns(cursor, columns, multiple=True)
expected_sql = [
call('SELECT count(attname) FROM pg_attribute WHERE attrelid = ( SELECT oid FROM pg_class WHERE relname = %s ) AND attname = %s', ('test_model', 'random1')),
call(
'SELECT count(attname) FROM pg_attribute WHERE attrelid = ( SELECT oid FROM pg_class WHERE relname = %s ) AND attname = %s',
('test_model', 'random2')),
'SELECT count(attname) FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = %s AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = "public") AND relkind = "r") AND attname = %s', ('test_model', 'random1')
),
call(
'ALTER TABLE "test_model" ADD COLUMN "random1" character varying(16),\nADD COLUMN "random2" character varying(16)'),

'SELECT count(attname) FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = %s AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = "public") AND relkind = "r") AND attname = %s', ('test_model', 'random2')
),
call(
'ALTER TABLE "test_model" ADD COLUMN "random1" character varying(16),\nADD COLUMN "random2" character varying(16)'
),
]
expect(cursor.execute.call_args_list).to(contain_exactly(
*expected_sql
*expected_sql
))
with description('Adding columns'):
with it('usign column by column'):
Expand All @@ -248,12 +250,12 @@ def callback():
add_columns(cursor, columns, multiple=False)
expected_sql = [
call(
'SELECT count(attname) FROM pg_attribute WHERE attrelid = ( SELECT oid FROM pg_class WHERE relname = %s ) AND attname = %s',
'SELECT count(attname) FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = %s AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = "public") AND relkind = "r") AND attname = %s',
('test_model', 'random1')),
call(
'ALTER TABLE "test_model" ADD COLUMN "random1" character varying(16)'),
call(
'SELECT count(attname) FROM pg_attribute WHERE attrelid = ( SELECT oid FROM pg_class WHERE relname = %s ) AND attname = %s',
'SELECT count(attname) FROM pg_attribute WHERE attrelid = (SELECT oid FROM pg_class WHERE relname = %s AND relnamespace = (SELECT oid FROM pg_namespace WHERE nspname = "public") AND relkind = "r") AND attname = %s',
('test_model', 'random2')),
call(
'ALTER TABLE "test_model" ADD COLUMN "random2" character varying(16)'),
Expand Down

0 comments on commit 4738392

Please sign in to comment.