def test_database_name(self):
        table_generator = TableGenerator("tpch", 0.001,
                                         self.generating_connector)
        self.assertEqual(table_generator.database_name(),
                         "indexselection_tpch___0_001")
        self.assertTrue(
            self.generating_connector.database_exists(
                "indexselection_tpch___0_001"))

        table_generator = TableGenerator("tpcds", 0.001,
                                         self.generating_connector)
        self.assertEqual(table_generator.database_name(),
                         "indexselection_tpcds___0_001")
        self.assertTrue(
            self.generating_connector.database_exists(
                "indexselection_tpcds___0_001"))

        table_generator = TableGenerator("tpch",
                                         0.001,
                                         self.generating_connector,
                                         explicit_database_name="test_db")
        self.assertEqual(table_generator.database_name(), "test_db")
        self.assertTrue(self.generating_connector.database_exists("test_db"))

        self.generating_connector.close()
    def test_generate_tpds(self):
        table_generator = TableGenerator("tpcds", 0.001,
                                         self.generating_connector)

        # Check that lineitem table exists in TableGenerator
        item_table = None
        for table in table_generator.tables:
            if table.name == "item":
                item_table = table
                break
        self.assertIsNotNone(item_table)

        # Check that i_item_sk column exists in TableGenerator and Table object
        i_item_sk = Column("i_item_sk")
        item_table.add_column(i_item_sk)
        self.assertIn(i_item_sk, table_generator.columns)
        self.assertIn(i_item_sk, table.columns)

        database_connect = PostgresDatabaseConnector(
            table_generator.database_name(), autocommit=True)

        tpcds_tables = [
            "call_center",
            "catalog_page",
            "catalog_returns",
            "catalog_sales",
            "customer",
            "customer_address",
            "customer_demographics",
            "date_dim",
            "household_demographics",
            "income_band",
            "inventory",
            "item",
            "promotion",
            "reason",
            "ship_mode",
            "store",
            "store_returns",
            "store_sales",
            "time_dim",
            "warehouse",
            "web_page",
            "web_returns",
            "web_sales",
            "web_site",
        ]
        for tpcds_table in tpcds_tables:
            self.assertTrue(database_connect.table_exists(tpcds_table))

        self.generating_connector.close()
        database_connect.close()
Пример #3
0
    def setUpClass(cls):
        cls.db_name = "tpch_test_db_index_selection"
        cls.index_selection = IndexSelection()
        db = PostgresDatabaseConnector(None, autocommit=True)

        SCALE_FACTOR = 0.001
        table_generator = TableGenerator("tpch",
                                         SCALE_FACTOR,
                                         db,
                                         explicit_database_name=cls.db_name)
        db.close()

        cls.index_selection.setup_db_connector(cls.db_name, "postgres")

        # Filter worklaod
        query_generator = QueryGenerator(
            "tpch",
            SCALE_FACTOR,
            cls.index_selection.db_connector,
            [3, 14],
            table_generator.columns,
        )
        cls.small_tpch = Workload(query_generator.queries)

        query_generator = QueryGenerator(
            "tpch",
            SCALE_FACTOR,
            cls.index_selection.db_connector,
            [5, 6],
            table_generator.columns,
        )
        cls.tpch_5_and_6 = Workload(query_generator.queries)
    def setUpClass(cls):
        cls.db_name = "tpch_test_db_algorithm"

        cls.db_connector = PostgresDatabaseConnector(None, autocommit=True)
        TableGenerator(
            "tpch", 0.001, cls.db_connector, explicit_database_name=cls.db_name
        )
        cls.selection_algorithm = SelectionAlgorithm(cls.db_connector, {"test": 24})

        cls.db_connector.close()
    def test_generate_tpch(self):
        table_generator = TableGenerator("tpch", 0.001,
                                         self.generating_connector)

        # Check that lineitem table exists in TableGenerator
        lineitem_table = None
        for table in table_generator.tables:
            if table.name == "lineitem":
                lineitem_table = table
                break
        self.assertIsNotNone(lineitem_table)

        # Check that l_receiptdate column exists in TableGenerator and Table object
        l_receiptdate = Column("l_receiptdate")
        lineitem_table.add_column(l_receiptdate)
        self.assertIn(l_receiptdate, table_generator.columns)
        self.assertIn(l_receiptdate, table.columns)

        database_connect = PostgresDatabaseConnector(
            table_generator.database_name(), autocommit=True)

        tpch_tables = [
            "customer",
            "lineitem",
            "nation",
            "orders",
            "part",
            "partsupp",
            "region",
            "supplier",
        ]
        for tpch_table in tpch_tables:
            self.assertTrue(database_connect.table_exists(tpch_table))

        self.generating_connector.close()
        database_connect.close()
    def test_generate_tpcds(self):
        self.db_name = "tpcds_test_db"

        TableGenerator(
            "tpcds",
            0.001,
            self.generating_connector,
            explicit_database_name=self.db_name,
        )

        db_connector = PostgresDatabaseConnector(self.db_name, autocommit=True)
        query_generator = QueryGenerator("tpcds", 1, db_connector, None, [])
        queries = query_generator.queries
        self.assertEqual(len(queries), 99)
        db_connector.close()
    def setUpClass(cls):
        cls.db_name = "tpch_test_db_database"
        cls.scale_factor = 0.001
        generating_connector = PostgresDatabaseConnector(None, autocommit=True)

        table_generator = TableGenerator(
            "tpch",
            cls.scale_factor,
            generating_connector,
            explicit_database_name=cls.db_name,
        )

        cls.db = PostgresDatabaseConnector(cls.db_name)
        query_generator = QueryGenerator("tpch", cls.scale_factor, cls.db,
                                         [5, 6], table_generator.columns)
        cls.workload = Workload(query_generator.queries)

        generating_connector.close()
 def setUpClass(cls):
     cls.db_name = "tpch_test_db_database"
     db = PostgresDatabaseConnector(None, autocommit=True)
     TableGenerator("tpch", 0.001, db, explicit_database_name=cls.db_name)
     db.close()
 def test_tpcds_with_wrong_sf(self):
     with self.assertRaises(Exception):
         TableGenerator("tpcds", 0.002, self.generating_connector)
 def test_not_implemented(self):
     with self.assertRaises(NotImplementedError):
         TableGenerator("not_tpch", 0.001, self.generating_connector)