|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
В созданном view есть динамические поля склеенные из текста и полей типа integer. Динамическое поле вычисляет размер как сумма символов теста и + 1 символ для integer. Пока в поле integer просто цифра, все ок. Как только в поле записал 2-3.. - значное число выдает ошибку, что мол строковое поле имеет длину 5 а вы пытаетесь получить поле длинной 6 (7,8,..). Перешел с firebird2.5 на 3 версию. На 2,5 такой проблемы не встречал. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2021, 10:09 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
Пример ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2021, 12:03 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
hvlad, таблица TB1 поле rent_min smallint поле rent_max smallint CREATE OR ALTER VIEW VW_TB1 ( rent ) AS SELECT 'аренда от '||rent_min||' до '||rent_max||' дней' FROM tb1 При первичном создании view размер вроде нормально считает, но стоит внести изменения и сохранить view заново, как поле укорачивается ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2021, 13:36 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
Firebird 3.0.7 IBExpert 2021.8.10 ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2021, 13:38 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop, Проблемав делфи, я так понимаю. Запоминаешь что-то там (или эксперт запоминает). Можно навсякий сделать этому всему CAST AS VARCHAR(20) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2021, 13:54 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop, это не пример. Я не могу это выполнить в isql и увидеть ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2021, 16:02 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
hvlad, /******************************************************************************/ /*** Tables ***/ /******************************************************************************/ CREATE TABLE TB1 ( RENT_MIN SMALLINT, RENT_MAX SMALLINT ); /******************************************************************************/ /*** Views ***/ /******************************************************************************/ /* View: VW_TB1 */ CREATE VIEW VW_TB1( RENT) AS select 'от '||rent_min||' до '||rent_max||' дней' from tb1 ; INSERT INTO TB1 (RENT_MIN, RENT_MAX) VALUES (1, 1); COMMIT WORK; ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2021, 14:36 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop, Отредактируйте view несколько раз, измените текст например. Поменяйте данные в таблице, запишите 100 и 1000. Попробуйте вызвать view и увидите ошибку. Еще более детально не знаю как показать. Система Windows 7 64 bit. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2021, 14:41 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop Отредактируйте view несколько раз, измените текст например. Поменяйте данные в таблице, запишите 100 и 1000. Попробуйте вызвать view и увидите ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2021, 14:45 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
hvlad, CREATE OR ALTER VIEW VW_TB1 ( RENT) AS select 'аренда от '||rent_min||' до '||rent_max||' дней' from tb1 ; update tb1 set rent_min=100,rent_max=100 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2021, 14:57 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop, и что показывает isql в итоге ? ps для форматирования sql текста тут есть соотв. тег ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2021, 15:46 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop, привести метаданные осилил, а посмотреть в описание view не смог? Там rent varchar(24), из которых 19 символов занимает текст 'аренда от '||rent_min||' до '||rent_max||' дней'. На подставляемые значения остается всего 5 символов. Совет сделать cast строке уже дали. Хотя, вычисление сервера кривое. Т.е. сервак для smallint должен явно предполагать что там будет 5 цифр. А значит столбец во view должен создаваться как 19+5+5, т.е. не 24, а 29 символов. я бы зарегал в трекер как баг. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 01:27 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
kdv, да, а до того как исправят, надо сделать нормальный cast с достаточным размером строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 02:50 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
kdv Т.е. сервак для smallint должен явно предполагать что там будет 5 цифр ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 07:06 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
kdv, Cast as varchar уже сделал, я написал сюда чтобы разработчики увидели ошибку и исправили. "привести метаданные осилил, а посмотреть в описание view не смог?" - не совсем понял, что вы имели ввиду, если размер динамического поля, то я вижу его, в самом первом сообщении указал, что размер получается неправильный Разбираться с регистрацией трекера нету времени. Если сообщение оставленное здесь будет достаточно для разработчиков, то было бы хорошо. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 07:30 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
Тут, как бы, "нет времени" работает в обе стороны. И было бы полезно помнить об этом. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 08:03 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
kdv, ты всё напутал. Для первого варианта view c "'от '||rent_min||' до '||rent_max||' дней'" я вижу VARCHR(24). Для второго с 'аренда от '||rent_min||' до '||rent_max||' дней' - VARCHR(31). Для варианта с rent_min||'-'||rent_max - VARCHAR(13), что однозначно указывает на 6 символов для каждого числа. И до сих пор никто не показал ошибку в isql. Тщательнее надо... (ц) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 11:41 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop, без воспроизводимого примера нет смысла идти в трекер. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 11:41 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
hvlad NewTop, без воспроизводимого примера нет смысла идти в трекер. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 13:37 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
hvlad, добавил "аренда " размер поля увеличился с 16 до 19, хотя в слове "аренда " 7 символов (включая пробел) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 13:46 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop, Где воспроизводимый в isql пример ? Куда мне эти картинки приложить ? PS Научить коммитить метаданные перед тем, как выполнять запросы ? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 13:51 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop, Код: 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. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 13:56 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
hvlad, Isql правильно вычисляет размер поля, значит виноват IBExpert. SQL> CREATE OR ALTER VIEW VW_TB1(RENT) AS select 'аренда от '||rent_min||' до '| |rent_max||' дней' from tb1; SQL> select * from vw_tb1; RENT =============================== аренда от 100 до 110 дней SQL> IBExpert правильно показал размер поля Varchar(31) Я привык к IBExpert, не стал тестировать через isql. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 14:03 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
hvlad NewTop, Где воспроизводимый в isql пример ? Куда мне эти картинки приложить ? PS Научить коммитить метаданные перед тем, как выполнять запросы ? Вы не правильно задаете вопросы. Не читаете вопросы, а пытаетесь сразу умничать. Firebird популярен благодаря IBExpert, я использую его как удобный инструмент. Сразу лезть в isql не стал. Оба продукта достаточно зрелые и я не ожидал такого поведения. Если бы показали, что в isql никаких проблем нет, и что нужно искать ошибку в IBExpert, то не пришлось бы раздувать эту тему. Но почему-то на русскоязычных форумах любят тратить свое и чужое время на пустую болтовню. Модератор, прошу закрыть тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 14:17 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop Вы не правильно задаете вопросы NewTop Но почему-то на русскоязычных форумах любят тратить свое и чужое время на пустую болтовню ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 14:39 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop Вы не правильно задаете вопросы. Не читаете вопросы, а пытаетесь сразу умничать. P.S. Я вот ни разу не программист, но и мне непонятно, почему "типа самые умные", не в состоянии выложить текст. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 14:41 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop Isql правильно вычисляет размер поля, значит виноват IBExpert. Эксперт там ничего не вычисляет. Как и isql, впрочем. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 14:52 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop Модератор, прошу закрыть тему. Причина ошибки, очевидно, в чём-то другом, а не в том, что показалось с первого взгляда. Может, всё же выясним? Или уже не интересно, отказываешься от использования IBExpert и FB3 как неправильных? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.08.2021, 15:00 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
IBExpert NewTop Isql правильно вычисляет размер поля, значит виноват IBExpert. Эксперт там ничего не вычисляет. Как и isql, впрочем. Поясните пожалуйста в чем тогда ошибка? При редактирований view через isql динамические поля получаются нужного размера, а через IBExpert размер урезан. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2021, 14:32 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop, IBExpert при "редактировании" показывает скрипт, который он собирается для этого редактирования применить. Он не отличается от того, что ты isql скармливал? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2021, 14:39 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop Поясните пожалуйста в чем тогда ошибка? При редактирований view через isql динамические поля получаются нужного размера, а через IBExpert размер урезан. Я не знаю, в чем ошибка. Могу только подтвердить, что проблема есть и воспроизводится в эксперте и под FB 3, и под FB 4. В обоих случаях CREATE VIEW передается на сервер так, как его написал пользователь. Дальнейшими вычислениями занимается сервер, поэтому вины эксперта я здесь не вижу. А воспроизведение в isql от тебя просят для того, чтобы исключить влияние багов и особенностей сторонних инструментов, к которым разработчики сервера отношения не имеют. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 04:42 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
IBExpert Могу только подтвердить, что проблема есть и воспроизводится в эксперте и под FB 3, и под FB 4 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 09:00 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
hvlad Как её воспроизвести ? В isql - не знаю. В эксперте выполнить скрипт: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
После чего уже видно, что поле RENT вьюхи имеет тип VARCHAR(16) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 09:49 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
IBExpert, нет, varchar(24). ibe 2021.5.14.1, FB 3.0.7.33374, чарсет базы NONE. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 11:13 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
kdv IBExpert, нет, varchar(24). ibe 2021.5.14.1, FB 3.0.73347, чарсет базы NONE. p.s. выполнял НЕ скрипт, а create/commit/create/commit в sql editor. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 11:14 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
kdv IBExpert, нет, varchar(24). ibe 2021.5.14.1, FB 3.0.7.33374, чарсет базы NONE. Проблема в кодировке, в которой коннектишся к базе. Под 1251 проблем нет, 24 длина получается. Под utf8 - 16. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 11:28 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
demon1992 Под utf8 - 16. Точно. У меня utf8 была. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 11:32 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
а вот так: Код: sql 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 12:10 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
Мимопроходящийа вот так: А вот так скорее всего получишь хрень, ибо интродюсеры - не то чем кажутся. В isql со скриптом в UTF-8 воспроизводится? Текст запроса реально в какой кодировке? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 12:28 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovВ isql со скриптом в UTF-8 воспроизводится? я воспроизвел. Тоже 16 получается. Файл скрипта uft8, кодировка utf8, set names utf8 и все дела, символы во вью нормальные, и т.д. Собственно, если упростить пример, и сделать CREATE OR ALTER VIEW VW_TB2( RENT) AS select 'от '||' до '||' дней' from tb1 ; то мы увидим, что столбец у view - varchar(4), что совершенно импоссибль, инкредибль, и мерде (при том что литералы по 3, 4 и 5 символов, как на заказ). А значит - ФБ правильно делает по 6 символов на smallint. Но хрен поймешь как вычисляет длину строки. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 12:51 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Мимопроходящийа вот так: А вот так скорее всего получишь хрень, ибо интродюсеры - не то чем кажутся. В isql со скриптом в UTF-8 воспроизводится? Текст запроса реально в какой кодировке? UTF-8. Всегда по умолчанию использую его. Я был уверен, что вин-1251 уже практический ни кем не используется. И при тестировании через isql я не обратил внимание на кодировку, посмотрел только размер поля. Могут ли разработчики без трекера начать исправлять эту ошибку? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 13:57 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
NewTop, могут. Но почему ты думаешь что они должны начать делать это прямо сейчас? Трекер он для того и есть, чтобы внести как напоминалку. Разработчики смотрят в трекер на баги, фичи и улучшения и выстраивают себе приоритет по их выполнению. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 14:03 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
kdv я воспроизвел. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 14:49 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
hvlad, могобыть. надо ж еще и без конкатенации проверить. вечером. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 15:46 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
kdv, Ржака Код: sql 1. 2. 3. 4. 5. 6.
VARCHAR(2) !!!! Так что можно и без русских букв. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 15:49 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
kdv, что-то я не очень понимаю пока. Вот это выдало select 'ab ' from tb1 varchar(2), как бы, причина понятна - пробелы справа урезаются, т.к. это char исходно. Тут селект * from view так и выдает 'ab'. А вот если сделать select rent||'a' from view тут же лезет ошибка переполнения, expected length 3, actual 11. А вот select 'ab '||'cd ' from tb1 varchar(3) , что пока для меня загадка (типа должно быть или 2, или 4). И при наличии данных в tb1 сразу тупо overflow идет при любом селекте. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 15:58 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
Длина поля высчитывается как целое число от деления на 4. Если будет 'ab' или 'abcd' или 'abcdefg' будет char(1). Если 'abcdefgh' то 2 и т.д. Хз как ты получил 3 при 'ab '||'cd ', может перекомпилить забыл или коммит сделать, у меня получается varchar(1). ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 16:42 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
demon1992, Я проверял по простому - методически. Код: plaintext 1.
Съедает-ли их компиляция view? select view('ab ')||'a' - ошибка переполнения. Значит нет, не съедает. До "деления" я в проверках не доехал, но да 'abcdefg' - да, превращается в varchar(1). 'abcdefgh' - да, превращается в varchar(2). А 'abcdefgh ' - всё равно varchar(2). Почему тогда 'ab ' varchar(2), а не varchar(1) ? 3/4 = 0+2 ? вместо 0+1 :-) И varchar(3) я получил на конкатенации Код: plaintext
2+8+2 = 12/4=3. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 17:01 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
demon1992, вот теперь бы еще сформулировать для трекера. И для русских букв в юникоде, получается, "кто-то делит" не на 4, а на 2. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.08.2021, 17:06 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
Ну раз оно никому не надо, то и не надо, ок ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 08:33 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
hvlad Ну раз оно никому не надо, то и не надо, ок смежный вопрос: а конкатенацию строковых констант или арифметические операции над числовыми константами Firebird делает во время выполнения или во время компиляции? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 11:57 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
ggreggory, во время выполнения конечно. А вот результирующий размер и тип вычисляется во время подготовки запроса или компиляции view ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 12:09 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 12:22 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
Симонов Денис ggreggory, во время выполнения конечно. Ясно. Просто константы разумно вычислять единократно, чем делая это каждый раз. Например: 1) умножение на две трети X*(2/3) если не делать прерасчет приводит к операции умножения и деления. 2) конкатенацию строк приходится использовать в коде процедуры/триггера для переноса одной единой длинной строки, когда она "уходит за экран" ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 14:22 |
|
View Firebird 3. Динамические поля
|
|||
---|---|---|---|
#18+
ggreggoryконстанты разумно вычислять единократно, чем делая это каждый раз. Разумно. Но напрочь поломает "хинты" класса f+0. Поэтому разумный программист вычислит их самостоятельно, ещё при написании SQL. Заодно его не будет поджидать сюрприз "почему X*(2/3) всегда равно нулю". ... |
|||
:
Нравится:
Не нравится:
|
|||
13.09.2021, 14:41 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1559940]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
156ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 291ms |
0 / 0 |