|
|
|
isql паддинг столбов: странный результат для LPAD('', integer_expression, 'X')
|
|||
|---|---|---|---|
|
#18+
hi all Запустите у себя вот это вот: Код: plaintext 1. 2. 3. 4. 5. У мну на Код: plaintext 1. 2. - получится файлик размеров примерно в 65 К - см аттач. :-) В нём строки номер 12 и 14 имеют длину по 32 Кб. Это отчего такое с ними случилось ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 16:24:06 |
|
||
|
isql паддинг столбов: странный результат для LPAD('', integer_expression, 'X')
|
|||
|---|---|---|---|
|
#18+
Не хватает функции, возвращающей тип данных по выражению. Если бы такая была, то её вызов для "lpad('1', 2+1, '0')||'<'" вернул бы "varchar(32765) character set ...". IBExpert в хинте на заголовке колонки отображает тип. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 16:42:39 |
|
||
|
isql паддинг столбов: странный результат для LPAD('', integer_expression, 'X')
|
|||
|---|---|---|---|
|
#18+
NickDeeНе хватает функции, возвращающей тип данных по выражению. Открой для себя SET SQLDA_DISPLAY ON; Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 17:24:42 |
|
||
|
isql паддинг столбов: странный результат для LPAD('', integer_expression, 'X')
|
|||
|---|---|---|---|
|
#18+
Таблоид, результат PAD-функций с неконстантным вторым аргументом является строка максимальной длины (32К). Выражение из операторов-констант не считается константным (парсер / оптимизатор никогда не вычисляют выражения). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 17:27:07 |
|
||
|
isql паддинг столбов: странный результат для LPAD('', integer_expression, 'X')
|
|||
|---|---|---|---|
|
#18+
Код: sql 1. 2. 3. Проблема ровно одна: движку нужно заранее знать какого размера выделять буфер. Верней не так... Работа с памятью в движке на сегодня устроена так, что требует не только указывать длину строковых полей в БД, но и имеет некоторые другие неудобные архитектурные последствия. Пока не будет придумана и реализована эффективная работа с резиновым varchar, придётся считаться с некоторыми ограничениями и несуразностями. В delphi например есть оба типа, string(N) и string, причём второй со счётчиком ссылок. И работает всё крайне быстро (например при присваивании одной переменной в другую (или при передаче string-параметра в функцию) не происходит выделения памяти под строку и копирования данных, а происходит лишь увеличение на 1 счётчика ссылок). В firebird же, насколько я понимаю, при присваивании и передаче в функцию всегда происходит alloc(+zero_allocated_memory)+move. Всё это сказывается на отжоре памяти и тактах cpu, например при: Код: sql 1. будут выделены и перелопачены лишние мегабайты памяти, причём не только при самом селекте, но и при сортировке. Хотя тут достаточно одного стринга длиной 3 байта, и счётчика ссылок на него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 17:49:54 |
|
||
|
isql паддинг столбов: странный результат для LPAD('', integer_expression, 'X')
|
|||
|---|---|---|---|
|
#18+
NickDeeэффективная работа с резиновым varchar спасибо, поржал NickDeeВ firebird же, насколько я понимаю, при присваивании и передаче в функцию всегда происходит alloc(+zero_allocated_memory)+move неправильно считаешь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2014, 18:00:09 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38606544&tid=1563737]: |
0ms |
get settings: |
6ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
160ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 191ms |
| total: | 422ms |

| 0 / 0 |
