def test_compressed_external_table(): columns = [ clickhouse_grpc_pb2.NameAndType(name='UserID', type='UInt64'), clickhouse_grpc_pb2.NameAndType(name='UserName', type='String') ] d1 = lz4.frame.compress(b'1\tAlex\n2\tBen\n3\tCarl\n') d2 = gzip.compress(b'4,Daniel\n5,Ethan\n') ext1 = clickhouse_grpc_pb2.ExternalTable(name='ext1', columns=columns, data=d1, format='TabSeparated', compression_type="lz4") ext2 = clickhouse_grpc_pb2.ExternalTable(name='ext2', columns=columns, data=d2, format='CSV', compression_type="gzip") stub = clickhouse_grpc_pb2_grpc.ClickHouseStub(main_channel) query_info = clickhouse_grpc_pb2.QueryInfo( query= "SELECT * FROM (SELECT * FROM ext1 UNION ALL SELECT * FROM ext2) ORDER BY UserID", external_tables=[ext1, ext2]) result = stub.ExecuteQuery(query_info) assert result.output == b"1\tAlex\n"\ b"2\tBen\n"\ b"3\tCarl\n"\ b"4\tDaniel\n"\ b"5\tEthan\n"
def test_external_table_streaming(): columns = [ clickhouse_grpc_pb2.NameAndType(name='UserID', type='UInt64'), clickhouse_grpc_pb2.NameAndType(name='UserName', type='String') ] def send_query_info(): yield clickhouse_grpc_pb2.QueryInfo( query="SELECT * FROM exts ORDER BY UserID", external_tables=[ clickhouse_grpc_pb2.ExternalTable( name='exts', columns=columns, data=b'1\tAlex\n2\tBen\n3\tCarl\n') ], next_query_info=True) yield clickhouse_grpc_pb2.QueryInfo(external_tables=[ clickhouse_grpc_pb2.ExternalTable(name='exts', data=b'4\tDaniel\n5\tEthan\n') ]) stub = clickhouse_grpc_pb2_grpc.ClickHouseStub(main_channel) result = stub.ExecuteQueryWithStreamInput(send_query_info()) assert result.output == b'1\tAlex\n'\ b'2\tBen\n'\ b'3\tCarl\n'\ b'4\tDaniel\n'\ b'5\tEthan\n'
def test_external_table(): columns = [ clickhouse_grpc_pb2.NameAndType(name='UserID', type='UInt64'), clickhouse_grpc_pb2.NameAndType(name='UserName', type='String') ] ext1 = clickhouse_grpc_pb2.ExternalTable( name='ext1', columns=columns, data=b'1\tAlex\n2\tBen\n3\tCarl\n', format='TabSeparated') assert query("SELECT * FROM ext1 ORDER BY UserID", external_tables=[ext1]) == "1\tAlex\n"\ "2\tBen\n"\ "3\tCarl\n" ext2 = clickhouse_grpc_pb2.ExternalTable(name='ext2', columns=columns, data=b'4,Daniel\n5,Ethan\n', format='CSV') assert query("SELECT * FROM (SELECT * FROM ext1 UNION ALL SELECT * FROM ext2) ORDER BY UserID", external_tables=[ext1, ext2]) == "1\tAlex\n"\ "2\tBen\n"\ "3\tCarl\n"\ "4\tDaniel\n"\ "5\tEthan\n" unnamed_columns = [ clickhouse_grpc_pb2.NameAndType(type='UInt64'), clickhouse_grpc_pb2.NameAndType(type='String') ] unnamed_table = clickhouse_grpc_pb2.ExternalTable( columns=unnamed_columns, data=b'6\tGeorge\n7\tFred\n') assert query("SELECT * FROM _data ORDER BY _2", external_tables=[unnamed_table]) == "7\tFred\n"\ "6\tGeorge\n"
def test_compressed_external_table(): columns = [ clickhouse_grpc_pb2.NameAndType(name="UserID", type="UInt64"), clickhouse_grpc_pb2.NameAndType(name="UserName", type="String"), ] d1 = lz4.frame.compress(b"1\tAlex\n2\tBen\n3\tCarl\n") d2 = gzip.compress(b"4,Daniel\n5,Ethan\n") ext1 = clickhouse_grpc_pb2.ExternalTable( name="ext1", columns=columns, data=d1, format="TabSeparated", compression_type="lz4", ) ext2 = clickhouse_grpc_pb2.ExternalTable(name="ext2", columns=columns, data=d2, format="CSV", compression_type="gzip") stub = clickhouse_grpc_pb2_grpc.ClickHouseStub(main_channel) query_info = clickhouse_grpc_pb2.QueryInfo( query= "SELECT * FROM (SELECT * FROM ext1 UNION ALL SELECT * FROM ext2) ORDER BY UserID", external_tables=[ext1, ext2], ) result = stub.ExecuteQuery(query_info) assert (result.output == b"1\tAlex\n" b"2\tBen\n" b"3\tCarl\n" b"4\tDaniel\n" b"5\tEthan\n")
def test_external_table_streaming(): columns = [ clickhouse_grpc_pb2.NameAndType(name="UserID", type="UInt64"), clickhouse_grpc_pb2.NameAndType(name="UserName", type="String"), ] def send_query_info(): yield clickhouse_grpc_pb2.QueryInfo( query="SELECT * FROM exts ORDER BY UserID", external_tables=[ clickhouse_grpc_pb2.ExternalTable( name="exts", columns=columns, data=b"1\tAlex\n2\tBen\n3\tCarl\n") ], next_query_info=True, ) yield clickhouse_grpc_pb2.QueryInfo(external_tables=[ clickhouse_grpc_pb2.ExternalTable(name="exts", data=b"4\tDaniel\n5\tEthan\n") ]) stub = clickhouse_grpc_pb2_grpc.ClickHouseStub(main_channel) result = stub.ExecuteQueryWithStreamInput(send_query_info()) assert (result.output == b"1\tAlex\n" b"2\tBen\n" b"3\tCarl\n" b"4\tDaniel\n" b"5\tEthan\n")
def test_external_table(): columns = [ clickhouse_grpc_pb2.NameAndType(name="UserID", type="UInt64"), clickhouse_grpc_pb2.NameAndType(name="UserName", type="String"), ] ext1 = clickhouse_grpc_pb2.ExternalTable( name="ext1", columns=columns, data=b"1\tAlex\n2\tBen\n3\tCarl\n", format="TabSeparated", ) assert (query("SELECT * FROM ext1 ORDER BY UserID", external_tables=[ext1]) == "1\tAlex\n" "2\tBen\n" "3\tCarl\n") ext2 = clickhouse_grpc_pb2.ExternalTable(name="ext2", columns=columns, data=b"4,Daniel\n5,Ethan\n", format="CSV") assert (query( "SELECT * FROM (SELECT * FROM ext1 UNION ALL SELECT * FROM ext2) ORDER BY UserID", external_tables=[ext1, ext2], ) == "1\tAlex\n" "2\tBen\n" "3\tCarl\n" "4\tDaniel\n" "5\tEthan\n") unnamed_columns = [ clickhouse_grpc_pb2.NameAndType(type="UInt64"), clickhouse_grpc_pb2.NameAndType(type="String"), ] unnamed_table = clickhouse_grpc_pb2.ExternalTable( columns=unnamed_columns, data=b"6\tGeorge\n7\tFred\n") assert (query("SELECT * FROM _data ORDER BY _2", external_tables=[unnamed_table]) == "7\tFred\n" "6\tGeorge\n")