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))
Пример #2
0
    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
Пример #3
0
 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
Пример #4
0
    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
Пример #6
0
    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'])
Пример #7
0
    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
Пример #8
0
    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'])
Пример #9
0
 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
Пример #10
0
    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
Пример #12
0
    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