def runTest(self): """ When there are no foreign key properties on the column, it returns an empty result """ with test_utils.Database(self.server) as (connection, database_name): test_utils.create_table(self.server, database_name, "test_table") cursor = connection.cursor() cursor.execute("SELECT pg_class.oid as table_id, " "pg_attribute.attnum as column_id " "FROM pg_class join pg_attribute on " "attrelid=pg_class.oid " "where pg_class.relname='test_table'" " and pg_attribute.attname = 'some_column'") table_id, column_id = cursor.fetchone() if connection.server_version < 90100: self.versions_to_test = ['default'] else: self.versions_to_test = ['9.1_plus'] for version in self.versions_to_test: template_file = os.path.join( os.path.dirname(__file__), "..", version, "properties.sql" ) template = file_as_template(template_file) sql = template.render( tid=table_id, cid=column_id) cursor = connection.cursor() cursor.execute(sql) fetch_result = cursor.fetchall() self.assertEqual(0, len(fetch_result))
def generate_sql(self, version): template_file = self.get_template_file(version, "dependents.sql") template = file_as_template(template_file) sql = template.render( where_clause="WHERE dep.objid=%s::oid" % self.table_id) return sql
def generate_sql(self, version): template_file = self.get_template_file(version, "acl.sql") template = file_as_template(template_file) public_schema_id = 2200 sql = template.render(scid=public_schema_id, tid=self.table_id) return sql
def generate_sql(self, version): template_file = self.get_template_file(version, "get_oid.sql") jinja2.filters.FILTERS['qtLiteral'] = lambda value: "NULL" template = file_as_template(template_file) sql = template.render(data={'name': None}, tid=self.table_id ) return sql
def generate_sql(self, version): template_file = self.get_template_file(version, "properties.sql") template = file_as_template(template_file) public_schema_id = 2200 sql = template.render(scid=public_schema_id, did=self.database_id, datlastsysoid=self.last_system_oid, tid=self.table_id ) return sql
def runTest(self): """ This tests that all applicable sql template versions can fetch some ddl """ with test_utils.Database(self.server) as (connection, database_name): test_utils.create_table(self.server, database_name, "test_table") cursor = connection.cursor() cursor.execute(u""" SELECT db.oid as did, datlastsysoid FROM pg_database db WHERE db.datname = '{0}'""".format(database_name)) database_id, last_system_oid = cursor.fetchone() cursor = connection.cursor() cursor.execute( "SELECT oid FROM pg_class where relname='test_table'") table_id = cursor.fetchone()[0] if connection.server_version < 90100: self.versions_to_test = ['default'] else: self.versions_to_test = ['9.1_plus'] for version in self.versions_to_test: template_file = os.path.join(os.path.dirname(__file__), "..", version, "properties.sql") template = file_as_template(template_file) public_schema_id = 2200 sql = template.render(scid=public_schema_id, did=database_id, datlastsysoid=last_system_oid, tid=table_id) cursor = connection.cursor() cursor.execute(sql) fetch_result = cursor.fetchone() first_row = {} for index, description in enumerate(cursor.description): first_row[description.name] = fetch_result[index] self.assertEqual('test_table', first_row['name']) # triggercount is sometimes returned as a string for some reason self.assertEqual(0, long(first_row['triggercount'])) self.assertEqual(None, first_row['typname']) self.assertEqual([], first_row['coll_inherits'])
def generate_sql(self, version): file_path = os.path.join(os.path.dirname(__file__), "..", "templates", "triggers", "sql") if 'type' in self.server: file_path = os.path.join(os.path.dirname(__file__), "..", "templates", "triggers", "sql", self.server['type']) template_file = self.get_template_file(version, file_path, "get_oid.sql") jinja2.filters.FILTERS['qtLiteral'] = lambda value: "NULL" template = file_as_template(template_file) sql = template.render(data={'name': None}, tid=self.table_id ) return sql
def runTest(self): """ This tests that when there are permissions set up on the table, acl query returns the permissions""" with test_utils.Database(self.server) as (connection, database_name): test_utils.create_table(self.server, database_name, "test_table") cursor = connection.cursor() cursor.execute("GRANT SELECT ON test_table TO PUBLIC") cursor = connection.cursor() cursor.execute("SELECT oid FROM pg_class WHERE relname='test_table'") table_id = cursor.fetchone()[0] if connection.server_version < 90100: self.versions_to_test = ['default'] else: self.versions_to_test = ['9.1_plus'] for version in self.versions_to_test: template_file = os.path.join(os.path.dirname(__file__), "..", version, "acl.sql") template = file_as_template(template_file) public_schema_id = 2200 sql = template.render(scid=public_schema_id, tid=table_id) cursor = connection.cursor() cursor.execute(sql) fetch_result = cursor.fetchall() public_acls = list(filter(lambda acl: acl[1] == 'PUBLIC', fetch_result)) self.assertEqual(len(public_acls), 1) new_acl_map = dict(zip(map(lambda column: column.name, cursor.description), public_acls[0])) self.assertEqual('PUBLIC', new_acl_map['grantee']) self.assertEqual(self.server['username'], new_acl_map['grantor']) self.assertEqual('relacl', new_acl_map['deftype']) self.assertEqual(['r'], new_acl_map['privileges']) self.assertEqual([False], new_acl_map['grantable'])
def generate_sql(self, version): template_file = self.get_template_file(version, "dependencies.sql") template = file_as_template(template_file) sql = template.render(where_clause="WHERE dep.objid=%s::oid" % self.table_id) return sql
def generate_sql(self, version): template_file = self.get_template_file(version, "nodes.sql") template = file_as_template(template_file) sql = template.render(tid=self.table_id) return sql