184 похожих чатов

Не могу понять в чём ошибка: пробую засунуть в поле

ipv6 адрес как FixedString(16) - получаю не то, что на входе.
Делаю таким тестовым скриптом:

#!/bin/bash
DB=proba
DATATABLE=iptest

# for debug: start from scratch
clickhouse-client —echo —database=$DB —query="DROP TABLE IF EXISTS $DB.$DATATABLE"

echo Creating table $DB.$DATATABLE if needed

clickhouse-client —echo —database=$DB —multiline —query="CREATE TABLE IF NOT EXISTS $DB.$DATATABLE ("\
"d Date,
ip_prefix String,
ip6 FixedString(16) default toFixedString('',16),
ip6str String,
prefix_len UInt8
) ENGINE = MergeTree(d, (d, ip6), 8192)"


echo '{"timestamp": "2017-09-14", "ip_prefix": "2a0b:aa80::/29"}' \
| clickhouse-local —table=TMP \
—input-format=JSONEachRow \
—verbose \
—structure='timestamp String,ip_prefix String' \
—query=\
"SELECT
timestamp,
ip_prefix,
(position(ip_prefix,':') > 0) ? IPv6StringToNum(extract(ip_prefix,'^(.+)/')) : IPv6StringToNum('0') as ip6,
(position(ip_prefix,':') > 0) ? extract(ip_prefix,'^(.+)/') : '' as ip6str,
(position(ip_prefix,'/') > 0) ? toUInt8(extract(ip_prefix,'/([0-9]+)')) : 0 as prefix_len
FROM TMP FORMAT CSV" \
| clickhouse-client —database=$DB —query="INSERT INTO $DB.$DATATABLE FORMAT CSV" —progress

clickhouse-client —database=$DB —query="SELECT *, IPv6NumToString(ip6) as ip6fromNum, IPv6NumToString(IPv6StringToNum('2a0b:aa80::')) FROM $DB.$DATATABLE FORMAT Vertical"

В результатет получаю такое:DROP TABLE IF EXISTS proba.iptest
Creating table proba.iptest if needed
CREATE TABLE IF NOT EXISTS proba.iptest (d Date,
ip_prefix String,
ip6 FixedString(16) default toFixedString('',16),
ip6str String,
prefix_len UInt8
) ENGINE = MergeTree(d, (d, ip6), 8192)
Executing query: CREATE TABLE TMP (timestamp String,ip_prefix String) ENGINE = File(JSONEachRow, stdin)
Executing query: SELECT
timestamp,
ip_prefix,
(position(ip_prefix,':') > 0) ? IPv6StringToNum(extract(ip_prefix,'^(.+)/')) : IPv6StringToNum('0') as ip6,
(position(ip_prefix,':') > 0) ? extract(ip_prefix,'^(.+)/') : '' as ip6str,
(position(ip_prefix,'/') > 0) ? toUInt8(extract(ip_prefix,'/([0-9]+)')) : 0 as prefix_len
FROM TMP FORMAT CSV
Read 1 rows, 42.00 B in 0.005 sec., 190 rows/sec., 7.82 KiB/sec.
Row 1:
──────
d: 2017-09-14
ip_prefix: 2a0b:aa80::/29
ip6: \0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
ip6str: 2a0b:aa80::
prefix_len: 29
ip6fromNum: 1100:: <------— откуда здесь такое значение вместо 2a0b:aa80:: ?
IPv6NumToString(IPv6StringToNum(\'2a0b:aa80::\')): 2a0b:aa80::

2 ответов

16 просмотров
yuyu-L16+12E Автор вопроса

Неужто никто не ткнёт пальцем в чём косяк? Кладу в базу одно значение, а вынимаю другое. Вроде простая штука и всё по букварю делаю...

http://paste.org.ru/?6izk35 - похоже что норм, а какая версия?

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта