Exemple #1
0
 def test_bind_values_for_unsharded_keyspace(self):
     stm = vtrouting.create_parallel_task_keyrange_map(1, 1)
     self.assertEqual(len(stm.keyrange_list), 1)
     where_clause, bind_vars = vtrouting._create_where_clause_for_keyrange(
         stm.keyrange_list[0])
     self.assertEqual(where_clause, '')
     self.assertEqual(bind_vars, {})
 def test_bind_values_for_str_keyspace(self):
     stm = vtrouting.create_parallel_task_keyrange_map(16, 16)
     for _, kr in enumerate(stm.keyrange_list):
         kr_parts = kr.split("-")
         where_clause, bind_vars = vtrouting._create_where_clause_for_keyrange(
             kr, keyspace_col_type=keyrange_constants.KIT_BYTES
         )
         if len(bind_vars.keys()) == 1:
             if kr_parts[0]:
                 self.assertNotEqual(where_clause.find(">="), -1)
             else:
                 self.assertNotEqual(where_clause.find("<"), -1)
         else:
             self.assertNotEqual(where_clause.find(">="), -1)
             self.assertNotEqual(where_clause.find(">="), -1)
             self.assertNotEqual(where_clause.find("AND"), -1)
         kid_list = str_shard_kid_map[kr]
         for keyspace_id in kid_list:
             if len(bind_vars.keys()) == 1:
                 if kr_parts[0]:
                     self.assertGreaterEqual(keyspace_id.encode("hex"), bind_vars["keyspace_id0"])
                 else:
                     self.assertLess(keyspace_id.encode("hex"), bind_vars["keyspace_id0"])
             else:
                 self.assertGreaterEqual(keyspace_id.encode("hex"), bind_vars["keyspace_id0"])
                 self.assertLess(keyspace_id.encode("hex"), bind_vars["keyspace_id1"])
Exemple #3
0
 def test_bind_values_for_str_keyspace(self):
     stm = vtrouting.create_parallel_task_keyrange_map(16, 16)
     for _, kr in enumerate(stm.keyrange_list):
         kr_parts = kr.split('-')
         where_clause, bind_vars = vtrouting._create_where_clause_for_keyrange(
             kr, keyspace_col_type=keyrange_constants.KIT_BYTES)
         if len(bind_vars.keys()) == 1:
             if kr_parts[0] == '':
                 self.assertNotEqual(where_clause.find('<'), -1)
             else:
                 self.assertNotEqual(where_clause.find('>='), -1)
         else:
             self.assertNotEqual(where_clause.find('>='), -1)
             self.assertNotEqual(where_clause.find('>='), -1)
             self.assertNotEqual(where_clause.find('AND'), -1)
         kid_list = str_shard_kid_map[kr]
         for keyspace_id in kid_list:
             if len(bind_vars.keys()) == 1:
                 if kr_parts[0] == '':
                     self.assertLess(keyspace_id.encode('hex'),
                                     bind_vars['keyspace_id0'])
                 else:
                     self.assertGreaterEqual(keyspace_id.encode('hex'),
                                             bind_vars['keyspace_id0'])
             else:
                 self.assertGreaterEqual(keyspace_id.encode('hex'),
                                         bind_vars['keyspace_id0'])
                 self.assertLess(keyspace_id.encode('hex'),
                                 bind_vars['keyspace_id1'])
Exemple #4
0
 def test_bind_values_for_unsharded_keyspace(self):
   stm = vtrouting.create_parallel_task_keyrange_map(1, 1)
   self.assertEqual(len(stm.keyrange_list), 1)
   where_clause, bind_vars = vtrouting._create_where_clause_for_keyrange(
       stm.keyrange_list[0])
   self.assertEqual(where_clause, '')
   self.assertEqual(bind_vars, {})
Exemple #5
0
 def test_bind_values_for_int_keyspace(self):
     stm = vtrouting.create_parallel_task_keyrange_map(16, 16)
     for kr in stm.keyrange_list:
         kr_parts = kr.split('-')
         where_clause, bind_vars = vtrouting._create_where_clause_for_keyrange(
             kr)
         if len(bind_vars.keys()) == 1:
             if kr_parts[0]:
                 self.assertNotEqual(where_clause.find('>='), -1)
             else:
                 self.assertNotEqual(where_clause.find('<'), -1)
         else:
             self.assertNotEqual(where_clause.find('>='), -1)
             self.assertNotEqual(where_clause.find('AND'), -1)
         kid_list = int_shard_kid_map[kr]
         for keyspace_id in kid_list:
             if len(bind_vars.keys()) == 1:
                 if kr_parts[0]:
                     self.assertGreaterEqual(keyspace_id,
                                             bind_vars['keyspace_id0'])
                 else:
                     self.assertLess(keyspace_id, bind_vars['keyspace_id0'])
             else:
                 self.assertGreaterEqual(keyspace_id,
                                         bind_vars['keyspace_id0'])
                 self.assertLess(keyspace_id, bind_vars['keyspace_id1'])
Exemple #6
0
 def test_bind_values_for_str_keyspace(self):
   stm = vtrouting.create_parallel_task_keyrange_map(16, 16)
   for kr in stm.keyrange_list:
     kr_parts = kr.split('-')
     where_clause, bind_vars = vtrouting._create_where_clause_for_keyrange(
         kr, keyspace_col_type=keyrange_constants.KIT_BYTES)
     if len(bind_vars.keys()) == 1:
       if kr_parts[0]:
         self.assertNotEqual(where_clause.find('>='), -1)
       else:
         self.assertNotEqual(where_clause.find('<'), -1)
     else:
       self.assertNotEqual(where_clause.find('>='), -1)
       self.assertNotEqual(where_clause.find('>='), -1)
       self.assertNotEqual(where_clause.find('AND'), -1)
     kid_list = str_shard_kid_map[kr]
     for keyspace_id in kid_list:
       if len(bind_vars.keys()) == 1:
         if kr_parts[0]:
           self.assertGreaterEqual(
               keyspace_id.encode('hex'), bind_vars['keyspace_id0'])
         else:
           self.assertLess(
               keyspace_id.encode('hex'), bind_vars['keyspace_id0'])
       else:
         self.assertGreaterEqual(
             keyspace_id.encode('hex'), bind_vars['keyspace_id0'])
         self.assertLess(keyspace_id.encode('hex'), bind_vars['keyspace_id1'])
Exemple #7
0
 def test_vt_routing(self):
     key_range = "80-C0"
     routing_sql, routing_bind_vars = vtrouting._create_where_clause_for_keyrange(key_range)
     vt_routing_info = vtrouting.VTRoutingInfo(key_range, routing_sql, routing_bind_vars)
     sql, bind_vars = sql_builder.select_by_columns_query(
         select_column_list=["col_a", sql_builder.Min("col_b")],
         table_name="my_table",
         column_value_pairs=[("col_a", [1, 2, 3])],
         vt_routing_info=vt_routing_info,
     )
     self.assertEqual(
         sql,
         "SELECT col_a, MIN(col_b) FROM my_table "
         "WHERE col_a IN (%(col_a_1)s, %(col_a_2)s, %(col_a_3)s) "
         "AND keyspace_id >= %(keyspace_id0)s "
         "AND keyspace_id < %(keyspace_id1)s",
     )
     self.assertEqual(
         bind_vars, dict(col_a_1=1, col_a_2=2, col_a_3=3, keyspace_id0=(0x80 << 56), keyspace_id1=(0xC0 << 56))
     )
 def test_vt_routing(self):
   key_range = '80-C0'
   routing_sql, routing_bind_vars = (
       vtrouting._create_where_clause_for_keyrange(key_range))
   vt_routing_info = vtrouting.VTRoutingInfo(
       key_range, routing_sql, routing_bind_vars)
   sql, bind_vars = sql_builder.select_by_columns_query(
       select_column_list=['col_a', sql_builder.Min('col_b')],
       table_name='my_table',
       column_value_pairs=[('col_a', [1, 2, 3])],
       vt_routing_info=vt_routing_info)
   self.assertEqual(
       sql,
       'SELECT col_a, MIN(col_b) FROM my_table '
       'WHERE col_a IN (%(col_a_1)s, %(col_a_2)s, %(col_a_3)s) '
       'AND keyspace_id >= %(keyspace_id0)s '
       'AND keyspace_id < %(keyspace_id1)s')
   self.assertEqual(
       bind_vars,
       dict(col_a_1=1, col_a_2=2, col_a_3=3,
            keyspace_id0=(0x80 << 56), keyspace_id1=(0xC0 << 56)))
Exemple #9
0
 def test_vt_routing(self):
   key_range = '80-C0'
   routing_sql, routing_bind_vars = (
       vtrouting._create_where_clause_for_keyrange(key_range))
   vt_routing_info = vtrouting.VTRoutingInfo(
       key_range, routing_sql, routing_bind_vars)
   sql, bind_vars = sql_builder.select_by_columns_query(
       select_column_list=['col_a', sql_builder.Min('col_b')],
       table_name='my_table',
       column_value_pairs=[('col_a', [1, 2, 3])],
       vt_routing_info=vt_routing_info)
   self.assertEqual(
       sql,
       'SELECT col_a, MIN(col_b) FROM my_table '
       'WHERE col_a IN (%(col_a_1)s, %(col_a_2)s, %(col_a_3)s) '
       'AND keyspace_id >= %(keyspace_id0)s '
       'AND keyspace_id < %(keyspace_id1)s')
   self.assertEqual(
       bind_vars,
       dict(col_a_1=1, col_a_2=2, col_a_3=3,
            keyspace_id0=(0x80 << 56), keyspace_id1=(0xC0 << 56)))
Exemple #10
0
 def test_bind_values_for_int_keyspace(self):
   stm = vtrouting.create_parallel_task_keyrange_map(16, 16)
   for _, kr in enumerate(stm.keyrange_list):
     kr_parts = kr.split('-')
     where_clause, bind_vars = vtrouting._create_where_clause_for_keyrange(kr)
     if len(bind_vars.keys()) == 1:
       if kr_parts[0] == '':
         self.assertNotEqual(where_clause.find('<'), -1)
       else:
         self.assertNotEqual(where_clause.find('>='), -1)
     else:
       self.assertNotEqual(where_clause.find('>='), -1)
       self.assertNotEqual(where_clause.find('>='), -1)
       self.assertNotEqual(where_clause.find('AND'), -1)
     kid_list = int_shard_kid_map[kr]
     for keyspace_id in kid_list:
       if len(bind_vars.keys()) == 1:
         if kr_parts[0] == '':
           self.assertLess(keyspace_id, bind_vars['keyspace_id0'])
         else:
           self.assertGreaterEqual(keyspace_id, bind_vars['keyspace_id0'])
       else:
         self.assertGreaterEqual(keyspace_id, bind_vars['keyspace_id0'])
         self.assertLess(keyspace_id, bind_vars['keyspace_id1'])