полное внешнее соединение monetdb, приводящее к varchar type_digits = 0 - PullRequest
0 голосов
/ 30 мая 2019

Я использую MonetDB v11.29.7 "Mar2018-SP1" в 64-битной операционной системе Windows10.Когда я выполняю полное внешнее объединение с двумя таблицами в соответствующих столбцах varchar с длинами> 0 (type_digits> 0), результирующий столбец в целевой таблице дает столбец varchar с type_digits = 0, хотя данные столбца, кажется, отображают правильное значение,непустые записи varchar.

Я не уверен, как интерпретировать информацию столбца type = varchar и type_digits = 0.Это состояние вызывает проблемы при последующей обработке / извлечении данных через интерфейсы Python (UDF), так как ожидаемый тип данных Python для данных этого столбца неоднозначен для преобразования кода Python.

Я привел простой примерв результате чего я создал две маленькие таблицы (dummy4 и dummy5) с двумя столбцами в каждой, а затем создал третью таблицу (dummy6) с помощью полной команды внешнего соединения.

Для таблицы dummy6 и столбца «ключ» я бы ожидалtype_digits = 32 (согласно столбцам «ключ» в двух исходных таблицах dummy4 и dummy5).Кроме того, как я должен интерпретировать состояние type = varchar и type_digits = 0?Какова будет правильная обработка / ожидание при доступе / выделении массива Python / numpy для извлечения «ключевого» столбца таблицы «dummy6» (через пользовательские функции Python) в этом случае?

create table dummy4(key varchar(32), val int);
insert into dummy4 values('AAAAAAAA',1);
insert into dummy4 values('BBBBBBBBB',2);

select * from dummy4;

+ ---------- + ------ + |ключ |val |+ =========== + ====== + |АААААААА |1 ||BBBBBBBBB |2 |+ ----------- + ------ +

create table dummy5(key varchar(32), val int);
insert into dummy5 values('CCCCCCCC',3);
insert into dummy5 values('DDDDDDDD',4);

select * from dummy5;

+ ---------- + ------ + |ключ |val |+ ========== + ====== + |CCCCCCCC |3 ||DDDDDDDD |4 |+ ---------- + ------ +

create table dummy6 as select key, dummy4.val as "val4", dummy5.val as "val5" from dummy4 full outer join dummy5 using (key);

select * from dummy6;

+ ----------- + ------ + ----- + |ключ |val4 |val5 |+ =========== + ====== + ====== + |АААААААА |1 |ноль ||BBBBBBBBB |2 |ноль ||CCCCCCCC |ноль |3 ||DDDDDDDD |ноль |4 |+ ----------- + ------ + ------ +

select t.name as "table_name", t.id as "table_id", c.id as "column_id", c.name as "column_name", c.type, c.type_digits from sys.tables t JOIN sys.columns c ON c.table_id = t.id where t.name = 'dummy4';

+ ------------ +---------- + ----------- + ------------- + --------- + ------------- + |имя_таблицы |table_id |column_id |имя_столбца |тип |type_digits |+ + ============ ========== + =========== + =============+ ========= + ============= + |dummy4 |78445 |78443 |ключ |Варчар |32 ||dummy4 |78445 |78444 |val |int |32 |+ ------------ + ---------- + ----------- + -------------+ --------- + ------------- +

select t.name as "table_name", t.id as "table_id", c.id as "column_id", c.name as "column_name", c.type, c.type_digits from sys.tables t JOIN sys.columns c ON c.table_id = t.id where t.name = 'dummy5';

+ ------------ + --------- + ----------- + ------------- + --------- + ------------- + |имя_таблицы |table_id |column_id |имя_столбца |тип |type_digits |+ + ============ ========== + =========== + =============+ ========= + ============= + |dummy5 |78449 |78447 |ключ |Варчар |32 ||dummy5 |78449 |78448 |val |int |32 |+ ------------ + ---------- + ----------- + -------------+ --------- + ------------- +

select t.name as "table_name", t.id as "table_id", c.id as "column_id", c.name as "column_name", c.type, c.type_digits from sys.tables t JOIN sys.columns c ON c.table_id = t.id where t.name = 'dummy6';

+ ------------ + --------- + ----------- + ------------- + --------- + ------------- + |имя_таблицы |table_id |column_id |имя_столбца |тип |type_digits |+ + ============ ========== + =========== + =============+ ========= + ============= + |dummy6 |78457 |78454 |ключ |Варчар |0 ||dummy6 |78457 |78455 |val4 |int |32 ||dummy6 |78457 |78456 |val5 |int |32 |+ ------------ + ---------- + ----------- + -------------+ --------- + ------------- +

...