def test_no_where_clause(self): sql, bind_vars = sql_builder.select_by_columns_query( select_column_list=['col_a', sql_builder.Min('col_b')], table_name='my_table', group_by='col_a') self.assertEqual( sql, 'SELECT col_a, MIN(col_b) FROM my_table GROUP BY col_a') self.assertEqual(bind_vars, {})
def test_simple(self): 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])], order_by='col_b ASC', group_by='col_a', limit=10) 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) ' 'GROUP BY col_a ' 'ORDER BY col_b ASC LIMIT %(limit_row_count)s') self.assertEqual( bind_vars, dict(col_a_1=1, col_a_2=2, col_a_3=3, limit_row_count=10))
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_min(self): self.assertEqual( sql_builder.Min('col_a').select_sql(alias=None), 'MIN(col_a)') self.assertEqual( sql_builder.Min('col_a').select_sql(alias='mt'), 'MIN(mt.col_a)')
def test_two_exprs(self): self.assertEqual( sql_builder.colstr( select_columns=[sql_builder.Count(), sql_builder.Min('col_a')]), 'COUNT(1), MIN(col_a)')