powered by simpleCommunicator - 2.0.18     © 2024 Programmizd 02
Map
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Добавление foreign key
52 сообщений из 52, показаны все 3 страниц
Добавление foreign key
    #40117406
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую знатоков и разработчиков!

WI-V3.0.8.33535 Firebird 3.0

Пустая новенькая база, Superserver, всё дефолтное, charset UTF8, один юзер (я), локальное подключение. Элементарнейший пример:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
create table main (str varchar(1));
commit;

insert into main(str) values ('X');
commit;

create table ref (id varchar(1) not null primary key);
commit;

insert into ref(id) values ('1');
commit;

alter table main add ref_id varchar(1) default '1' not null;
commit;



Пытаюсь добавить ключ

Код: plsql
1.
alter table main add constraint FK_MAIN foreign key (ref_id) references ref (id)



Все видят - ключ есть, но сервер считает иначе:

Код: plaintext
1.
2.
3.
4.
Cannot commit transaction:
violation of FOREIGN KEY constraint "".
violation of FOREIGN KEY constraint "FK_MAIN" on table "MAIN".
Foreign key reference target does not exist.
Problematic key value is ("REF_ID" = '1')

Почему - загадка....
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117412
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory

Почему - загадка....


По-моему дело в том, что вот это
alter table main add ref_id varchar(1) default '1' not null;
не обязывает сервер ни сувать в это поле default по всей таблице, ни подставлять его при чтении нулла. Более того, если туда спецом, то есть явно, при апдейте-инсёрте запихнут нулл, то нулл и будет, что вызовет ошибку нарушения констрейнта. Это обязывает сервер всего лишь писать дефолтное значение если в инсёрте поле не указано ваще. Единственно - с некоторых пор при создании бэкапа такой пердимонокль стал обслуживаться подстановкой туда дефолта вместо нуллов. Во избежание ситуаций разбитого корыта - базы нет, а бэкап-копия не ресторится из-за нуллов, оставшихся после создания поля на непустой таблице и забывчивости насчёт заполнения. А в сообщении об ошибке да, путаница.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117423
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory> WI-V3.0.8.33535 Firebird 3.0

В 2.5 работает.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117424
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СПМ> По-моему дело в том, что вот это
> alter table main add ref_id varchar(1) default '1' not null;
> не обязывает сервер ни сувать в это поле default по всей таблице

Ну здрасьте... Заставляет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117425
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
СПМ> По-моему дело в том, что вот это
> alter table main add ref_id varchar(1) default '1' not null;
> не обязывает сервер ни сувать в это поле default по всей таблице

Ну здрасьте... Заставляет.

с какой радости?
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117429
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr> с какой радости?

Не понял вопроса. Ты это серьёзно щас или прикалываешься?
С такой радости, что это прописано в стандарте.
Когда это было имплементировано в FB я не помню, но давно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117430
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или ты про разницу между изменением записей и
изменением формата записи пытаешься сказать?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117432
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я хочу сказать, что ФБ никогда при добавлении поля ничего в него не писал. Дефолт всегда подставляется при чтении.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117435
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну т.е. про формат, представление и пр.
Но на FK-то это не должно влиять?

Или должно?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117445
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамС такой радости, что это прописано в стандарте.

Цитату из стандарта, где он предписывает при таком alter проводить полный update
по всей таблице - В СТУДИЮ! Ну или сразу в трекер.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117446
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще изначально всё было как я изложил. Потом подстановку при создании бэкапа внедрила, если мне не изменяет склероз, бабушка Аня, под вопли страдальцев-ушохлопов. Нет, пожалуй, я слишком строг, на самом деле не только таковых, нулл в нот нулл поле может быть результатом повреждения базы. Когда подстановку ввели для чтения вообще, я, видимо, уже не застал и потому не в курсе. Судя по рассматриваемому примеру, ввели кривовато. Я вообще против всяких - здесь читаем, здесь не читаем, здесь рыбу заворачивали, программист должен видеть реальное положение вещей, а не фантазии неестественного интеллекта. Я так думаю (С) Рубик джан. Дефолт имхо нужен вообще только для атрибутики, связанной с арифметикой, чтоб не нуллить выражения с участием поля и не запутывать окончательно ситуацию со значениями связанных с этим полем полей других таблиц, и для статусных-признаковых полей. Для ФК допустИм в качестве значения ссылки на запись "Не определено" в справочнике, и ФСЁ, по Дейту, так сказать. А в общем случае новое поле - это не выскочивший сам собой прыщ. Его появление связано либо с недочётами изначального проектирования в плане неполноты модели предметной области, либо с расширением оной, государствие наше, например, самозабвенно предается законотворчеству. Художники, нехорошая женщина. Оно должно быть заполнено на основании некоторой сторонней для первоначальной модели информации, как правило, в несколько проходов. И тут какое умолчание ни придумай, оно будет иметь право на совпадение с осмысленным результатом такого заполнения и необслуженную запись будет не отличить от обслуженной.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117447
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

мне сложно дать какие-либо комментарии с учетом того, что приведенный ТС пример у меня выполняется без ошибок и на 3.0.8 и на 4.0.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117448
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

Гаджимурадов РустамС такой радости, что это прописано в стандарте.

Цитату из стандарта, где он предписывает при таком alter проводить полный update
по всей таблице - В СТУДИЮ! Ну или сразу в трекер.


Гыыы. Представляю себе при этом перекур после введения поля с дефолтом на табличке эдак с полмиллиардом записей :)
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117449
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Они в стандарте хитро отмазались: " Let C be the column added to T. [...] every value in C is the default value for C ". Где именно оно " is " каждый понимает в меру своей испорченности :-)
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117450
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimitr
Гаджимурадов Рустам,

мне сложно дать какие-либо комментарии с учетом того, что приведенный ТС пример у меня выполняется без ошибок и на 3.0.8 и на 4.0.


Во вложении файл базы до "alter table main add constraint FK_MAIN foreign key (ref_id) references ref (id)".

Ошибка выдается не на выполнении статмента, а на коммите.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117453
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dimitr
Гаджимурадов Рустам,

мне сложно дать какие-либо комментарии с учетом того, что приведенный ТС пример у меня выполняется без ошибок и на 3.0.8 и на 4.0.


И скриншот с этим файлом:
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117464
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggoryОшибка выдается не на выполнении статмента, а на коммите.
госпидя...

- индекс (ФК, ПК, и вообще) создается по коммиту.
- индекс индексирует ЗАПИСИ и версии. А не дефолты.
- в записи main(str='X', ref_id = null).
кабздец.

p.s. "И скриншот с этим файлом:"
Вот интересно, почему нельзя из CMD просто скопировать текст, надо обязательно КАРТИНКУ прикладывать. Чтобы если потребуется, нельзя было оттуда ничего скопировать?
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117466
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv

- индекс индексирует ЗАПИСИ и версии. А не дефолты.
- в записи main(str='X', ref_id = null).


А что, интересно было бы знать (С) Пятачок, в FB3 покажет селект этой записи? Дефолт? ;)
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117468
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
firebird>isql
Use CONNECT or CREATE DATABASE to specify a database
SQL> create database 'inet://z:\temp\fk.fdb';
SQL>
SQL> show version;
ISQL Version: WI-V3.0.8.33524 Firebird 3.0
Server version:
Firebird/Windows/AMD/Intel/x64 (access method), version "WI-V3.0.8.33533 Firebird 3.0"
Firebird/Windows/AMD/Intel/x64 (remote server), version "WI-V3.0.8.33533 Firebird 3.0/tcp (Win7x64)/P15:C"
Firebird/Windows/AMD/Intel/x64 (remote interface), version "WI-V3.0.8.33533 Firebird 3.0/tcp (Win7x64)/P15:C"
on disk structure version 12.0
SQL>
SQL> create table main (str varchar(1));
SQL> commit;
SQL>
SQL> insert into main(str) values ('X');
SQL> commit;
SQL>
SQL> create table ref (id varchar(1) not null primary key);
SQL> commit;
SQL>
SQL> insert into ref(id) values ('1');
SQL> commit;
SQL>
SQL> alter table main add ref_id varchar(1) default '1' not null;
SQL> commit;
SQL>
SQL> alter table main add constraint FK_MAIN foreign key (ref_id) references ref (id);
SQL> commit;
SQL>
SQL> drop database;
SQL> exit;
Всё работает как и должно работать.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117469
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да. И не только в FB3.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117470
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad
Всё работает как и должно работать.


И чарсет UTF8 ?

Я вложил тестовую базу в предыдущем сообщении. Вы на ней пробовали?
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117472
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdv

Вот интересно, почему нельзя из CMD просто скопировать текст, надо обязательно КАРТИНКУ прикладывать. Чтобы если потребуется, нельзя было оттуда ничего скопировать?


А почему нет?! Текст примера есть в самом первом сообщении! Тут ведь пошел спор, что у других проблема не воспроизводится. Какие ещё формы доказательств мне предоставить?! Базу выложил!!!
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117474
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory,

во-первых, зачем ПК и ФК varchar. Понятно, что бывает, но лучше не надо (разве что исключение - guid).
во-вторых, как я уже сказал, индекс индексирует записи и версии. У тебя в записи null, к столбцу сделан default.
Понятно что при select будет выводиться default. Но физически в записи - null, до тех пор пока этому столбцу не будет сделан апдейт каким-то значением.

В третьих, даже если Влад написал, что это таки-работает, всё равно индексировать дефолт (определение, а не запись) как-то неправильно. Что будет, если мы после создания такого ФК грохнем дефолт. Понятно, что так-то ничего не изменится - в ключе '1' ссылается на номер записи. Или ключ null ссылается на номер записи? Видимо, всё-таки 1, потому что при чтении записи null будет заменяться на default. А вот если мы грохнем default, вот будет веселуха для записей, где остался null.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117476
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ggreggory
hvlad
Всё работает как и должно работать.


И чарсет UTF8 ?
А вот с utf8 действительно есть проблема.
Напишешь трекеру ?
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117489
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
ggreggory,

во-первых, зачем ПК и ФК varchar. Понятно, что бывает, но лучше не надо (разве что исключение - guid).
во-вторых, как я уже сказал, индекс индексирует записи и версии. У тебя в записи null, к столбцу сделан default.
Понятно что при select будет выводиться default. Но физически в записи - null, до тех пор пока этому столбцу не будет сделан апдейт каким-то значением.

В третьих, даже если Влад написал, что это таки-работает, всё равно индексировать дефолт (определение, а не запись) как-то неправильно. Что будет, если мы после создания такого ФК грохнем дефолт. Понятно, что так-то ничего не изменится - в ключе '1' ссылается на номер записи. Или ключ null ссылается на номер записи? Видимо, всё-таки 1, потому что при чтении записи null будет заменяться на default. А вот если мы грохнем default, вот будет веселуха для записей, где остался null.


А я говорил, я пердуперждал С примерчиком из одной записи ладно, а вот в реальной относительно сложной системе устроить себе, любимому, по оплошности такую залипуху - это ж повеситься этот нулл искать, когда тебе его не показывают.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117492
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
во-вторых, как я уже сказал, индекс индексирует записи и версии. У тебя в записи null, к столбцу сделан default.
Понятно что при select будет выводиться default.
При построении индекса (и проверке FK) движок видит ровно то же самое - значение из default.
И это правильно.


kdv
В третьих, даже если Влад написал, что это таки-работает
Сначала об этом написал ДЕ 22405321

kdv
индексировать дефолт (определение, а не запись) как-то неправильно
Всё работает так, как будто при создании not null поля с default был сделан update с этим default.
Так что всё в порядке и никакой "веселухи" ты не получишь :)
Проверь, только не с мультибайтными варчарами - там есть небольшой баг, как выяснилось.

kdv
А вот если мы грохнем default, вот будет веселуха для записей, где остался null.
Не будет веселухи. Тот формат, в котором был задан default (и создано поле) никуда не исчез и значение default из него и будет использовано для таких полей.

Если очень хочется подробностей, можешь перечитать это
https://sourceforge.net/p/firebird/mailman/message/23974402/
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117512
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в чарсете потому что FK?
Без default баг тоже воспроизводится?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117518
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad

Так что всё в порядке и никакой "веселухи" ты не получишь :)
Проверь, только не с мультибайтными варчарами - там есть небольшой баг, как выяснилось.


- А кто у нас муж?
- Волшебник.
- Был неправ, вспылил.

Вообще интересно, сейчас какое-то увлечение мультибайтными чарсетами. Это действительно по жизни многим нужны хитрые буковки или на всякий, из серии - оптимист изучает английский, пессимист китайский...
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117531
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишка,

я не проверял, теоретизирую. Пусть автор "багрепорта" проверит.
По моей логике ошибка должна быть, хоть в utf8, хоть без. Не должен индекс индексировать то, чего нет в таблице.

Ха-ха. Оборжаться. Решил проверить.
Код: sql
1.
alter table test add tst2 varchar(5)


коммит, селект *.
Выдает записи (добавленные раньше) со столбцом tst2 null.
Код: sql
1.
alter table test alter tst2 set default '1'


коммит, селект *
шиш. в tst2 NULL !!!

Ну ладно.
Код: sql
1.
alter table test add tst3 varchar(5) default '1'


коммит
select * from test
ОПЯТЬ ВСЁ NULL. ФБ 3.0.7. Я как-то не понимаю.
Код: sql
1.
alter table test add tst4 integer default 1


опять все записи с null, ничего на default не заменяется.

Что происходит? :-)
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117538
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишкаВообще интересно, сейчас какое-то увлечение мультибайтными чарсетами.
Сейчас? Вообще-то андроид юникодный, там только в utf8 и можно работать. Я для себя это выяснил еще в 2013 году, когда на IBLite делал приложение для мобилы.
Собственно, как только прилада делается более чем для одного языка - всё, нужен юникод, а в юникоде тебе пофиг, мультибайтный чарсет будет использоваться, или нет.
(я бы даже сказал, что старая фишка ИБ (и ФБ) когда 2 столбца могут иметь разные чарсеты, сейчас не нужна и вредна. Базу надо тупо в utf8 создавать, и всё)
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117545
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv> Что происходит? :-)

Не коммитишь, наверное.
Стареешь, хватку теряешь...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117550
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все мозги разбил на части,
Все извилины заплёл
И Канатчиковы власти...
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117554
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
Код: sql
1.
alter table test alter tst2 set default '1'



коммит, селект *
шиш. в tst2 NULL !!!
А какого "шиша" там не должен быть нулл ???
Поле позволяет нуллы ? Ты вставлял в него что-то другое ?

У ТС кардинально другая ситуация - у него поле NOT NULL
NOT NULL
ы ?

kdv
Что происходит? :-)
У меня есть версия, но я пока что не буду её озвучивать.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117555
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Проблема в чарсете потому что FK?
Нет.

Гаджимурадов Рустам
Без default баг тоже воспроизводится?
Баг про default значение.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117568
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

тьфу, чьорт.

p.s. нет, версия твоя совсем неправильная.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117569
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

всё перепроверил - да, проблем с индексом нет (если дропнуть default, и даже not null) - для отсутствовавших столбцов ищется default и после его (и not null) удаления. Кривых результатов нет.

Был неправ в своих теоретизированиях.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117572
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv

p.s. нет, версия твоя совсем неправильная.


В смысле не VSOP, а XO? :)
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117576
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишка,

если бы он предположил "переутомился" или "старческий маразм", то угадал бы.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117582
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
Старый плюшевый мишка,

если бы он предположил "переутомился" или "старческий маразм", то угадал бы.


Как я тебя понимаю...
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117586
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

ура, ты возвращаешь мне веру в людей :)
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117587
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишка
kdv
Старый плюшевый мишка,

если бы он предположил "переутомился" или "старческий маразм", то угадал бы.


Как я тебя понимаю...
Рано ему ! Низзя ! ;)
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117591
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad,

трезвость - норма жизни, кароч...
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117612
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
kdv,

ура, ты возвращаешь мне веру в людей :)


А я?

Знаешь, при всём моём ёрничаньи я к вам испытываю глубочайшее уважение. Это манера речи такая. Она всегда такая была, но с возрастом речи становится всё меньше, а манеры всё больше. Типа пытаюсь создать атмосферу междусобойчика, где взаимопонимание мотивации допускает больше вольностей, чем на периметре обороны от внешнего мира. Особенно впечатляет просто фантастическая оперативность когда проблема изложена внятно и предоставлен воспроизводимый пример. И так с разработчиками FB было всегда. Однажды, когда я оказался с разбитым корытом вместо базы, уже не помню из-за чего, мне с помощью Димы Еманова Марк через несколько часов собрал эксклюзивный билд, позволивший вылезти из этой жопы. Такое не забывается.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117654
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad
А какого "шиша" там не должен быть нулл ???
Поле позволяет нуллы ? Ты вставлял в него что-то другое ?

а вот тут я что-то засомневался про нашу правильность. В стандарте нет ничего про nullable / not null, там просто добавляемое поле должно принимать значение дефолта (при отсутствии дефолта - NULL).
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117693
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr> а вот тут я что-то засомневался про нашу правильность.
dimitr> В стандарте нет ничего про nullable / not null, там просто
dimitr> добавляемое поле должно принимать значение дефолта
dimitr> (при отсутствии дефолта - NULL).

В цитате про уже имеющие записи, а не новые,
так что всё корректно. А вот для новых записей
(и нового поля) при отсутствии NOT NULL -
поведение некорректное, ИМХО.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117694
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvlad> Баг про default значение.

Ясно, спасибо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117700
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишка
Знаешь, при всём моём ёрничаньи я к вам испытываю глубочайшее уважение.
И это взаимно.

Я мало отвечаю на твои письма, потому что редко имею что добавить (или возразить) :)
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117713
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr
hvlad
А какого "шиша" там не должен быть нулл ???
Поле позволяет нуллы ? Ты вставлял в него что-то другое ?

а вот тут я что-то засомневался про нашу правильность. В стандарте нет ничего про nullable / not null, там просто добавляемое поле должно принимать значение дефолта (при отсутствии дефолта - NULL).
Ну поднимай тогда эту тему заново.
Логика есть в обоих подходах, обратная совместимость тоже имеет своё значение.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117741
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Старый плюшевый мишка
Вообще интересно, сейчас какое-то увлечение мультибайтными чарсетами. Это действительно по жизни многим нужны хитрые буковки или на всякий, из серии - оптимист изучает английский, пессимист китайский...


винда не панацея
как сказали андроид utf8, на линухе вот тож utf8
Код: plaintext
1.
2.
3.
$ locale
LANG=ru_RU.UTF-8
...
все что в вебе тоже в utf8 поголовно
api всякие туда же
какой смысл кодировки туда сюда гонять

если мультиязычность маячит то вообще без вариантов
даже если не маячит - вариант "на всякий" тоже вариант
лет 10 мин бд только в utf8, ну кроме легаси (и тут коннект в utf8)
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117775
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос возник, который, возможно, и не касается сабжа, но всё же: движок при
сравнении значений полагается на то, что хранящийся VARCHAR имеет правильное
дополнение хвоста или нет? То есть если я прямо в базу положу, VARCHAR,
дополненнный не нулями, а случайным мусором, он в индекс попадёт с этим мусором?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Добавление foreign key
    #40117905
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

нигде мусор в хвосте не учитывается. Нули там нужны только для хорошей RLE-компрессии.
...
Рейтинг: 0 / 0
Добавление foreign key
    #40128255
ggreggory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvlad
А вот с utf8 действительно есть проблема.
Напишешь трекеру ?


Написал:

https://github.com/FirebirdSQL/firebird/issues/7108
...
Рейтинг: 0 / 0
52 сообщений из 52, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Добавление foreign key
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали тему (1): Анонимы (1)
Читали форум (3): Анонимы (1), Bing Bot 5 мин., Yandex Bot 9 мин.
Пользователи онлайн (6): Анонимы (4), Yandex Bot, Bing Bot
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]