Ejemplo n.º 1
0
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"
Ejemplo n.º 2
0
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'
Ejemplo n.º 3
0
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"
Ejemplo n.º 4
0
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")
Ejemplo n.º 5
0
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")
Ejemplo n.º 6
0
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")