async def test_use_index_avaiable_in_more_query(self): sql_ValuesQuery = IntFields.filter( pk=1).use_index("index_name").values("id").sql() self.assertEqual( sql_ValuesQuery, "SELECT `id` `id` FROM `intfields` USE INDEX (`index_name`) WHERE `id`=1", ) sql_ValuesListQuery = IntFields.filter( pk=1).use_index("index_name").values_list("id").sql() self.assertEqual( sql_ValuesListQuery, "SELECT `id` `0` FROM `intfields` USE INDEX (`index_name`) WHERE `id`=1", ) sql_CountQuery = IntFields.filter( pk=1).use_index("index_name").count().sql() self.assertEqual( sql_CountQuery, "SELECT COUNT(*) FROM `intfields` USE INDEX (`index_name`) WHERE `id`=1", ) sql_ExistsQuery = IntFields.filter( pk=1).use_index("index_name").exists().sql() self.assertEqual( sql_ExistsQuery, "SELECT 1 FROM `intfields` USE INDEX (`index_name`) WHERE `id`=1 LIMIT 1", )
async def test_use_index(self): sql = IntFields.filter(pk=1).only("id").use_index("index_name").sql() self.assertEqual( sql, "SELECT `id` `id` FROM `intfields` USE INDEX (`index_name`) WHERE `id`=1", ) sql_again = IntFields.filter( pk=1).only("id").use_index("index_name").sql() self.assertEqual( sql_again, "SELECT `id` `id` FROM `intfields` USE INDEX (`index_name`) WHERE `id`=1", )
async def test_select_for_update(self): sql1 = IntFields.filter(pk=1).only("id").select_for_update().sql() sql2 = IntFields.filter(pk=1).only("id").select_for_update( nowait=True).sql() sql3 = IntFields.filter(pk=1).only("id").select_for_update( skip_locked=True).sql() sql4 = IntFields.filter(pk=1).only("id").select_for_update( of=("intfields", )).sql() dialect = self.db.schema_generator.DIALECT if dialect == "postgres": self.assertEqual( sql1, 'SELECT "id" "id" FROM "intfields" WHERE "id"=1 FOR UPDATE', ) self.assertEqual( sql2, 'SELECT "id" "id" FROM "intfields" WHERE "id"=1 FOR UPDATE NOWAIT', ) self.assertEqual( sql3, 'SELECT "id" "id" FROM "intfields" WHERE "id"=1 FOR UPDATE SKIP LOCKED', ) self.assertEqual( sql4, 'SELECT "id" "id" FROM "intfields" WHERE "id"=1 FOR UPDATE OF "intfields"', ) elif dialect == "mysql": self.assertEqual( sql1, "SELECT `id` `id` FROM `intfields` WHERE `id`=1 FOR UPDATE", ) self.assertEqual( sql2, "SELECT `id` `id` FROM `intfields` WHERE `id`=1 FOR UPDATE NOWAIT", ) self.assertEqual( sql3, "SELECT `id` `id` FROM `intfields` WHERE `id`=1 FOR UPDATE SKIP LOCKED", ) self.assertEqual( sql4, "SELECT `id` `id` FROM `intfields` WHERE `id`=1 FOR UPDATE OF `intfields`", )
async def test_select_for_update(self): sql = IntFields.filter(pk=1).only("id").select_for_update().sql() dialect = self.db.schema_generator.DIALECT if dialect == "postgres": self.assertEqual( sql, 'SELECT "id" "id" FROM "intfields" WHERE "id"=1 FOR UPDATE', ) elif dialect == "mysql": self.assertEqual( sql, "SELECT `id` `id` FROM `intfields` WHERE `id`=1 FOR UPDATE", )
async def test_force_index(self): sql = IntFields.filter(pk=1).only("id").force_index("index_name").sql() self.assertEqual( sql, "SELECT `id` `id` FROM `intfields` FORCE INDEX (`index_name`) WHERE `id`=1", )