powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Containing c параметрами - нельзя ли сравнить?
14 сообщений из 14, страница 1 из 1
Containing c параметрами - нельзя ли сравнить?
    #37076489
В FireBird, чтобы запрос

Код: plaintext
1.
select * from Some_Table
  where :param containing 'Строка символов' (или_поле_таблички)

выполнился, нужно, бы во время выполнения значение параметра :param было не длиннее, чем 'Строка символов' (или не длиннее соотв. поля таблички Some_Table).
Иначе сервер выброси исключение: http://www.sql.ru/forum/actualthread.aspx?tid=822992

Предлагается заранее выполнить Cast для определения нужного размера (с "запасом").

Код: plaintext
1.
select * from Some_Table
  where Cast(:param as varchar ( 1024 )) containing 'Строка символов' (или_поле_таблички)

Интересно - у "взрослых" СУБД, типа Оракл или МС СКЛ - точно так же, нужно явно определять размер?
...
Рейтинг: 0 / 0
Containing c параметрами - нельзя ли сравнить?
    #37076504
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересующийся ТСИнтересно - у "взрослых" СУБД, типа Оракл или МС СКЛ - точно так же, нужно явно определять
размер?

Вопрос не имеет смысла - у "взрослых СУБД" вообще нет оператора CONTAINING.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Containing c параметрами - нельзя ли сравнить?
    #37076718
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересующийся ТСИнтересно - у "взрослых" СУБД, типа Оракл или МС СКЛ - точно так же, нужно явно определять размер?
У FB хватает странных ограничений, например буквально вчера он у меня отказался создать индекс по varchar(300). На 2.1 работал, а на 2.0 ниасилил.

Про МС не скажу, а в Оракле довольно трудно придумать, когда бы требовалось указать cast с размером. Он и без размера-то употребляется редко, в основном для подстановки в запрос выборок из табличных функций.
...
Рейтинг: 0 / 0
Containing c параметрами - нельзя ли сравнить?
    #37076928
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerбуквально вчера он у меня отказался создать индекс по varchar(300). На 2.1 работал, а на
2.0 ниасилил.

С теми, кто не ниасилил документацию, случаются и не такие неприятности...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Containing c параметрами - нельзя ли сравнить?
    #37076961
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovС теми, кто не ниасилил документацию, случаются и не такие неприятности...
Ага. Видать, где-то в сети лежит такая волшебная документация, что от её асиливания лимиты чудесным образом раздвигаются
...
Рейтинг: 0 / 0
Containing c параметрами - нельзя ли сравнить?
    #37077006
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

в 2.0 размер страницы 1К небось? Сам додумался или кто другой тебе жизнь испортил? ;-)
...
Рейтинг: 0 / 0
Containing c параметрами - нельзя ли сравнить?
    #37077033
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrв 2.0 размер страницы 1К небось?
Представления не имею - это не моя база, пользователи скрипта пожаловались на ошибки. Впрочем, в 2.1 та же база, создававшаяся по идее теми же скриптами (просто файл, который я когда-то скопировал к себе, представления не имею, какой версией FB он поддерживался до копирования). Так что либо размер страницы одинаковый, либо дефолтовый.
...
Рейтинг: 0 / 0
Containing c параметрами - нельзя ли сравнить?
    #37077053
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

в скрипте запросто может быть жестко прошит размер страницы в 1К в CREATE DATABASE. Версии до 2.1 это поддерживали, а 2.1 втихую апгрейдит его до 4К, т.к. меньше не поддерживает. Отсюда и разница на индексах. В оракле ведь тоже макс. размер ключа зависит от размера блока.
...
Рейтинг: 0 / 0
Containing c параметрами - нельзя ли сравнить?
    #37077115
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrа 2.1 втихую апгрейдит его до 4К, т.к. меньше не поддерживает.
Хм. На месте FB-разработчика я бы высказался на тему такой самостоятельности. Имхо, если инструмент не может выполнить прямую и недвусмысленную команду, он должен выдать ошибку, а не тихой сапой "делать что могу".

dimitrВ оракле ведь тоже макс. размер ключа зависит от размера блока.
Зависит. Только большинство разработчиков ни разу в жизни на это ограничение не натыкаются, поскольку оно чаще всего порядка 6500 байт в то время как varchar ограничен 4000 байт.

Если обратите внимание, я не против ограничений, но отметил, что в FB они порой довольно странные и неожиданные (с точки зрения моей версии здравого смысла). В данном случае мой здравый смысл говорит, что создание индекса по двум memo-полям - ситуация крайне редкая и бессмысленная, то есть ограничение практически роли не играет. Создание индекса по одному бизнес-полю (ограничение длины взято на основе данных государственного справочника + запас) - ситуация достаточно частая, и невозможность это сделать - для меня была неожиданна.
...
Рейтинг: 0 / 0
Containing c параметрами - нельзя ли сравнить?
    #37077172
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerХм. На месте FB-разработчика я бы высказался на тему такой самостоятельности. Имхо, если инструмент не может выполнить прямую и недвусмысленную команду, он должен выдать ошибку, а не тихой сапой "делать что могу".
а чем страница 4К хуже для разработчика, чем 1К? Все как работало, так и будет. Только заметно быстрее, уж поверьте. Ну и "непонятные" лимиты не будут портить жизнь ;-) А вот ваше предложение обрубит туеву хучу скриптов, в которых тупые разработчики в эпоху царя гороха беспричинно заложились на размер 1К. Бекапы перестанут переноситься на новую версию, и т.п. геморрой.

softwarerЗависит. Только большинство разработчиков ни разу в жизни на это ограничение не натыкаются, поскольку оно чаще всего порядка 6500 байт в то время как varchar ограничен 4000 байт.
6.5К оно на дефолтном (и заодно минимальном?) блоке 8К. Если бы оракл поддерживал размер блока в 1К, то лимит был бы порядка 700 байт и вы бы наверняка наткнулись на него при индексации очередного "бизнес-поля" лишь чуток длиннее, чем сейчас. Был бы тот же уровень неожиданности.

как видим, никакой фантастики тут нет. Есть лишь большее дефолтное удобство оракла в данном случае. И увеличение нижнего предела в ФБ 2.1 служит той же цели.
...
Рейтинг: 0 / 0
Containing c параметрами - нельзя ли сравнить?
    #37077251
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrа чем страница 4К хуже для разработчика, чем 1К? Все как работало, так и будет.
До тех пор, пока "всё" соответствует ожиданиям разработчиков СУБД. Но всегда найдётся какой-нибудь вывернутый функционал, который из-за этого начнёт глючить. Для FB я вряд ли приведу разумный пример, с бедра - if page_count * 1024 * 0.9 > file_limit then print "Пора заводить новую базу". Скажем, в Oracle мне помнится подобное, когда была создана таблица с извратными параметрами вроде initial 8K next 80K pctincrease 1000 maxextents 10, а потом вышел девятый оракл, и этот скрипт натравили на uniform size табличное пространство - внедрились, всё чудесно, и вдруг система рухнула по максимальному объёму таблицы.

dimitrв которых тупые разработчики в эпоху царя гороха беспричинно заложились на размер 1К.
А если умные и причинно? :) Это вечный вопрос.. по мне, лучше исправить падающий скрипт в явном и очевидном месте, нежели отлавливать тонкие проблемы хрен знает где только потому, что СУБД считает себя умнее разработчика.

dimitr6.5К оно на дефолтном (и заодно минимальном?) блоке 8К. Если бы оракл поддерживал размер блока в 1К,
То либо индекс допускал бы превышение размера блока, либо я ругался бы на индексы и в оракле тоже :) Де-факто же в оракле есть пожалуй что два дурных ограничения: 30 байт на размер идентификатора и 1000 значений внутри in(...) списка. Во всяком случае это что вспомнилось сходу.

Теоретически минимальный блок 4К. Практически поддержка в одном экземпляре табличных пространств с разным размером блока - геморрой очччень сомнительной полезности, поэтому подавляющее большинство экземпляров работают с 8К блоками, небольшое количество - с 16К.

dimitrкак видим, никакой фантастики тут нет.
А магии вообще не существует. "Со стороны разработчика продукта" я понимаю наличие ограничений. "Со стороны потребителя продукта" я полагаю, что ограничения должны соответствовать потребностям пользователя. Соответственно, со своей стороны - стороны проектировщика - я склонен говорить разработчику "вот это надо обеспечить, а как это сделать - если не знаешь, давай думать вместе".
...
Рейтинг: 0 / 0
Containing c параметрами - нельзя ли сравнить?
    #37077403
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerДо тех пор, пока "всё" соответствует ожиданиям разработчиков СУБД. Но всегда найдётся какой-нибудь вывернутый функционал, который из-за этого начнёт глючить.
значит, он этого заслуживает :-) К слову, со времени выпуска 2.1 ни одного такого случая анналы не зафиксировали.

softwarerА если умные и причинно? :)
это фантастика :-)

softwarerпо мне, лучше исправить падающий скрипт в явном и очевидном месте, нежели отлавливать тонкие проблемы хрен знает где только потому, что СУБД считает себя умнее разработчика
если бы все были такими, моя жизнь вероятно стала бы намного проще :-)

softwarerТо либо индекс допускал бы превышение размера блока
есть хоть одна СУБД, поддерживающая такое? Теория и практика тут несколько конфликтуют.

softwarerДе-факто же в оракле есть пожалуй что два дурных ограничения: 30 байт на размер идентификатора и 1000 значений внутри in(...) списка
оба есть и в ФБ, если это утешит :-) Есть и другие, конечно. Хотя с точки зрения ФБ-шника оракловое ограничение на размер строки в 4К тоже абсолютно дурное.
...
Рейтинг: 0 / 0
Containing c параметрами - нельзя ли сравнить?
    #37077456
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarerВ данном случае мой здравый смысл говорит, что создание индекса по двум memo-полям -
ситуация крайне редкая и бессмысленная

В основном ещё и тем, что memo это BLOB, а они индексированию не поддаются вообще.

dimitrоба есть и в ФБ, если это утешит :-)
Не утешит, поскольку в ФБ они больше: 32 символа и 1500 значений в in.

И если уж речь зашла о дурацких ограничениях, меня немало удивила невозможность в Оракуле
предсказать сколько максимально байт может занять на клиенте значение из поля NCHAR. Как
они не натыкаются на BOF - совершенно непонятно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Containing c параметрами - нельзя ли сравнить?
    #37077460
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrесли бы все были такими, моя жизнь вероятно стала бы намного проще :-)
Дык все таковы, какими Вы их видите/формируете.

Я помню одну девочку, писала себе в блог лиричные грустные рассказы, интересно общалась, в основном мужская аудитория, однажды в полной растерянности опубликовала письмо анонимной доброжелательницы - мол, ты конечно добрая итп, но хочу открыть тебе глаза, мужики козлы и сволочи, а вовсе не такие, какими ты их рисуешь. Это письмо вызвало несколько спокойных комментариев типа "ну не повезло женщине", она не выдержала и объявилась отстаивать свою точку зрения, общий тон её собеседников был - мы тебя понимаем и нам тебя жалко, в итоге - уникальный случай для интернетов, имхо - она глубоко задумалась на тему "наверное таки я что-то неправильно делаю, что на меня всю жизнь клюют только козлы и именно козлы".

dimitrоба есть и в ФБ, если это утешит :-)
Да нет, не утешит. Имхо со времён минимум Oracle 8, когда оно начало конкретно мешать, можно было бы хотя бы поднять до varchar(300), если уж не придумать чего попродвинутее. А с IN() и вовсе - стандартный обход через IN(..) OR IN(..) OR IN(..) показывает сугубую искусственность, неразумность ограничения.

dimitrХотя с точки зрения ФБ-шника оракловое ограничение на размер строки в 4К тоже абсолютно дурное.
Я не очень понимаю слова "с точки зрения ФБ-шника". От них тянет флеймом. Имхо в данном случае есть точка зрения абстрактного БД-разработчика с реальными прикладными задачами. И с их точки зрения, имхо, ограничение размера строки в, допустим, 40 символов было бы невменяемым, в 200 - неудобным, а начиная, например, от 1000 где стоит граница - там и ладно, всё равно она где-то должна стоять. Я знаю случай, когда не хватило и ораклового ограничения на размер строки в 32К, но тут вопрос простой - либо оно есть, либо его (реального) нет. Второе пока делать не любят, хотя имхо это вопрос больше замшелого наследия, нежели реальной сложности.
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Containing c параметрами - нельзя ли сравнить?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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