randomString(1) FROM numbers(50000200);
Потом делаем:
SELECT * FROM z.t OFFSET 50000000;
Получаем:
Cannot push block to port which already has data. (LOGICAL_ERROR).
Никто не сталкивался с такой ошибкой ?
Offset без limit ? А если с limit? Какая вермия кх?
А дело не в limit, а в randomString.
А почему вы написали что ошибка после select ?
Потому, что она после попытки выполнить select
22.7.1.1054. create table t (f String, i UInt64) Engine=MergeTree order by i; INSERT INTO t (f) SELECT randomString(10) FROM numbers(50000200); INSERT INTO t (f) SELECT randomString(1) FROM numbers(50000200); SELECT * FROM t OFFSET 50000000; Showed first 10000. 50000400 rows in set. Elapsed: 1.424 sec. Processed 100.00 million rows, 2.25 GB (70.24 million rows/s., 1.58 GB/s.)
Если выполнять через client: │ =⚌0⚌A.Ò⚌ │ I4پg │ │ >]Pi⚌C⚌ │ └─────────────────────────┘ Showed first 10000. 50000400 rows in set. Elapsed: 1.224 sec. Processed 100.00 million rows, 1.45 GB (81.68 million rows/s., 1.18 GB/s.) clickhouse-db :) xterm-256colorxterm-256colorxterm-256colorxterm-256colorxterm-256colorxterm-256... +DDL такая: CREATE TABLE z.t ( f String ) ENGINE = MergeTree ORDER BY f SETTINGS index_granularity = 8192;
https://clickhouse.com/docs/ru/sql-reference/functions/other-functions/#randomstring Генерирует бинарную строку заданной длины, заполненную случайными байтами (в том числе нулевыми). https://clickhouse.com/docs/ru/sql-reference/functions/other-functions/#randomascii Генерирует строку со случайным набором печатных символов ASCII. https://clickhouse.com/docs/ru/sql-reference/functions/other-functions/#randomstringutf8 Генерирует строку заданной длины со случайными символами в кодировке UTF-8.
Это я видел, когда используешь IDE DBeaver и выполняешь запрос на select получаешь: 'Cannot push block to port which already has data. (LOGICAL_ERROR).'
там написано DBException и номер?
SQL Error [49] [07000]: Code: 49. DB::Exception: Cannot push block to port which already has data. (LOGICAL_ERROR) (version 22.6.1.1985 (official build)) , server ClickHouseNode(addr=http:ip:8123, db=default)@-718568384
да баг в КХ странно но не получается воспроизвести курлом
а в 22.6.2 воспроизводится?
Да. SQL Error [49] [07000]: Code: 49. DB::Exception: Cannot push block to port which already has data. (LOGICAL_ERROR) (version 22.6.2.12 (official build)) , server ClickHouseNode(addr=http:ip_new:8123, db=default)@621939104
а как таблица создана? Create table ? можете ошибку на сервере посмотреть в /var/log/clickhouse-server/clickhouse-server.err.log нужен запрос (jdbc драйвер может запрашивать в разных форматах TSV/RowBinary) и стектрейс
CREATE TABLE z.t ( f String ) ENGINE = MergeTree ORDER BY f SETTINGS index_granularity = 8192;
Stack trace (when copying this message, always include the lines below): 0. DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int, bool) @ 0xb8a143a in /usr/bin/clickhouse 1. DB::OffsetTransform::preparePair(DB::OffsetTransform::PortsData&) @ 0x17496b2a in /usr/bin/clickhouse 2. ? @ 0x17495329 in /usr/bin/clickhouse 3. DB::OffsetTransform::prepare(std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > const&, std::__1::vector<unsigned long, std::__1::allocator<unsigned long> > const&) @ 0x1749526b in /usr/bin/clickhouse 4. DB::ExecutingGraph::updateNode(unsigned long, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&) @ 0x171a9a39 in /usr/bin/clickhouse 5. DB::PipelineExecutor::executeStepImpl(unsigned long, std::__1::atomic<bool>*) @ 0x171a42eb in /usr/bin/clickhouse 6. ? @ 0x171a60c4 in /usr/bin/clickhouse 7. ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>) @ 0xb94d077 in /usr/bin/clickhouse 8. ? @ 0xb95049d in /usr/bin/clickhouse 9. start_thread @ 0x7ea5 in /usr/lib64/libpthread-2.17.so 10. __clone @ 0xfeb0d in /usr/lib64/libc-2.17.so
в запросе в конце JDBC дравер дописывает TabSeparatedWithNamesAndTypes или RowBinaryWithNamesAndTypes Т.е. интересно у вас кидает ошибку select * from z.t offset 50000000 format TabSeparatedWithNamesAndTypes или select * from z.t offset 50000000 format RowBinaryWithNamesAndTypes
В обоих случаях скорей всего
Обсуждают сегодня