110 def table_schema(self, mh, tablename): |
110 def table_schema(self, mh, tablename): |
111 result = mh.sqlexec("SELECT column_name, data_type, character_maximum_length FROM information_schema.columns " |
111 result = mh.sqlexec("SELECT column_name, data_type, character_maximum_length FROM information_schema.columns " |
112 "WHERE LOWER(table_name) = %(table)s", {'table': tablename.lower()}) |
112 "WHERE LOWER(table_name) = %(table)s", {'table': tablename.lower()}) |
113 assert result, 'no table %s' % tablename |
113 assert result, 'no table %s' % tablename |
114 return dict((x[0], (x[1], x[2])) for x in result) |
114 return dict((x[0], (x[1], x[2])) for x in result) |
|
115 |
|
116 def table_constraints(self, mh, tablename): |
|
117 result = mh.sqlexec( |
|
118 "SELECT DISTINCT constraint_name FROM information_schema.constraint_column_usage " |
|
119 "WHERE LOWER(table_name) = '%(table)s' AND constraint_name LIKE 'cstr%%'" |
|
120 % {'table': tablename.lower()}) |
|
121 assert result, 'no table %s' % tablename |
|
122 return set(x[0] for x in result) |
115 |
123 |
116 |
124 |
117 class MigrationCommandsTC(MigrationTC): |
125 class MigrationCommandsTC(MigrationTC): |
118 |
126 |
119 def _init_repo(self): |
127 def _init_repo(self): |