Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 8 9 10 11 12 13 14 15 [16] 17   вперед  Ctrl
 Re: Все таки Oracle впереди планеты всей!  [new]
softwarer
Member

Откуда: 127.0.0.1
Сообщений: 67463
Блог
Favn
Я считаю, что строковый NULL в Оракле ведет себя как "пустая строка" в строковых операциях и как общепринятый NULL в остальных,

Не совсем так, к сожалению.

Favn
1. Внутренне противоречиво.

Это значит, что Вы можете назвать "внутреннее противоречие" - то есть некое противоречие во внутренних, сугубо оракловых концепциях. Что-то я не совсем в этом уверен :) Хотя сам одно место, пожалуй, назову.

Favn
2. Противоречит поведению базового типа varchar во всех остальных РСУБД.

Безусловно.

Favn
Т.е. является архитектурной "багой",

Из (2) это никак не следует и следовать не может.
Из (1) будет следовать не раньше, чем будет обосновано (1). Да и тогда.... есть в оракле одна чертовски забавная бага, проистекающая из самой сути реализации версионного механизма. Но было бы глупо из-за одной исчезающе редкой проблемы отказываться от всей версионности.

Favn
Причем "фича" эта deprecated самим Ораклом.

Чушь.

Favn
... изначальным ... неправомерно.

Такое ощущение, что Вы обсуждаете юридический вопрос. В инженерной работе такая постановка вопроса просто нелепа.

Скажем, у меня был проект, где было удобно принять, что N/0=null. И я определил операцию деления именно таким образом. И это значительно упростило всем работу и уменьшило количество ошибок. И честное слово, забавно было бы понаблюдать, как какой-нибудь "тру математик" кричал бы, что это неправомерно, на ноль делить нельзя и мы обязаны немедленно взвалить на себя тройной геморрой.
20 июл 10, 18:40    [9133521]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Favn
Member

Откуда:
Сообщений: 585
Yo.!
пересказывать, что утверждалось, когда есть текст на предыдущей странице мне лень. еще раз, теперь что я имел ввиду фразой "процедурный код сторед процедуры на SQLJ выполняются сторонней жава машиной, которая о принятых в SQL DB2 правилах не в курсе" надеюсь ясно ?
Не надейтесь, не ясно. Даже после того, как Вам стало лень :)
Еще раз - ни одна JVM о правилах SQL не в курсе. Т.к. любой SQL выполняется движком SQL, а Java-код - JVM.
По поводу фразы - процедурный код Java SP в любом случае выполняется какой-то JVM, а собственно SQLJ-вставки в него, т.е. #sql директивы - в любом случае выполняются движком SQL. Или Оракл JVM сама SQL выполняет, без собственно Oracle Database? :)
Поэтому что сторонняя Java машина, что своя - о правилах SQL конкретной СУБД должен знать SQLJ препоцессор, с СУБД поставляемый, а вовсе не сама JVM.
Кстати, с DB2 всегда в комплекте поставляется именно IBM JVM.
Yo.!
по мне так спроектированная под нужды субд, интегрированная в структуру SGA JVM существенно отличается от работающей во внешнем процессе JVM общего назначения.
Уже обсуждали, так что замнем для ясности :) В любом случае, к выполнению SQLJ все это никакого отношения не имеет.
Yo.!
не выполняется. там создается такой же profile как и в дб2, структура этого profile файлика описана в стандарте. просто перед созданием profile валидируется SQL...
1. все то же самое, что и у дб2, все согласно стандарту. к статик SQL прислоняется любая JVM, рядом кладутся profile, только JDBC через который дергается база зовется чуть по другому.
У DB2 - совсем не так. Разница в том, что в DB2 создается package не только в виде стандартного файлика, а как объект внутри БД, содержащий все запросы SQLJ. И объект этот валидируется с последующими изменениями в БД, и может стать инвалидным, запретив выполнение ставшей "неправильной" SP. JDBC при этом вообще не используется, у них с SQLJ просто общий универсальный драйвер, но внутри драйвера механизмы разные.
Yo.!
2. не совместимая со стандартом загрузка SQLJ как единое целое в субд, где выполняется под интегрированной в ядро JVM. второй вариант естественно гораздо быстрее. думаю тут просто SQLJ транслируется в обычную Java stored procedure. вот они, по моему, имеют такие же зависимости как и pl/sql
Хотелось бы поглядеть на какую-либо инфу по варианту 2. Я в свое время искал на тему SQLJ по доке Оракла, но ничего похожего не видел.
Yo.!
возвращаясь к нашим нулам: для меня выглядит дико когда говорят, что когда я обрабатываю нулл языком сторед процедур, то это один нулл, а когда я обрабатываю ту же сущность из той же таблицы, из того же поля но уже на уровне апп-сервера это уже какой-то другой нулл.
И что делать, если это действительно разные нуллы в разных языках? В JDBC, чтобы не было путаницы, даже функцию wasNull() ввели. Не isNull(), чтобы не было нездоровых ассоциаций :)
Да, в SQLJ, в отличие от JDBC, можно использовать Java null для индикации SQL NULL. ИМХО, это неправильно и путает - хороший шанс получить в лоб эксепшн в рантайме при случайном использовании простых типов в хост-переменных.
Лучше по-старинке пользоваться indicator переменными. Меньше путаницы будет.
20 июл 10, 20:12    [9133835]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Yo.!
Guest
Favn
Хотелось бы поглядеть на какую-либо инфу по варианту 2. Я в свое время искал на тему SQLJ по доке Оракла, но ничего похожего не видел.

начать можно отсюда
http://download.oracle.com/docs/cd/E11882_01/java.112/e10590/inserver.htm

дальше о реализации sqlj мне не интересно. не моя тема.


Yo.!
И что делать, если это действительно разные нуллы в разных языках?

с чего бы им быть разными если описывают они одно понятие (то что лежит в бд) ?
20 июл 10, 23:03    [9134373]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
vadiminfo
Member

Откуда: Обнинск
Сообщений: 4802
Favn

В дополнение к этому я считаю, что изначальным значением NULL в SQL в описании полей было именно "неопределенное значение", и это следует из логичесих операций с участием NULL. Но этот вопрос к данной дискуссии не относится. О "неопределенности" я говорил именно в свете того, что раз NULL может означать неопределенность, толковать его именно как пустую строку неправомерно..

Дополнение ЭТОГО выглядит значительно важнее самого ЭТОГО (NULL много важнее в МД, чем пустая строка, скорее всего). Про "следует" у нас там были все время трудности. У Вас там логические операции возвращали NULL, а из этого может следовать все что угодно, в общем случае, и даже, возможно, может ни чего не следовать.

Favn
Ок. Определимся. Я считаю, что строковый NULL в Оракле ведет себя как "пустая строка" в строковых операциях и как общепринятый NULL в остальных, что бы он там не значил. И это:
1. Внутренне противоречиво.
2. Противоречит поведению базового типа varchar во всех остальных РСУБД.
Т.е. является архитектурной "багой", проистекающей из совпадающего способа хранения NULL и '', традиционно для архитектурных "баг" (не только Оракла :) ) замаскированной под "фичу". Причем "фича" эта deprecated самим Ораклом.

Строковые операции, логические, арифметические это все же, возможно, разные алгебры в общем случае, чтобы так уж сразу и противоречивость была. Так лавры Рассела в выявлении противоречий нам с Вами, скорей всего, не заполучить.
Про другие СУБД: ну зато не надо писать проверку на пустые строки. Поди плохо?
Favn

Да, NULL. А имея в виду именно "пустоту" могли бы назвать VOID, например.

Ну видите, нас с Вами не спрашивают как назвать. А, возможно, и зря. Уж мы бы им понапридумывали.

Favn

По моему мнению, принципиальное отличие не в "изначальности", а в результатах логических операций. Если использовать логику кроме is null в запросах с этим полем не предполагается, NULL может значить что Вам угодно. Но не надо делать из частного случая общее правило.
За сим теоретический спор с привлечением лингвистики и философии предлагаю закончить в виду полной бесперспективности :)
И сосредоточится на конкретном толковании NULL varchar в Оракле и остальных РСУБД.

Но тада зачем Вы про изначальность рассуждали, раз дело, как теперь, неожиданно вдруг выясняется не в ней?
Favn

Когда речь идет о расширениях SQL - безусловно. Но мы говорим о базовой операции || над базовым же типом varchar.

Вот какда речь идет о стандартах, то здесь изначальное может играть роль. И я про стандарты уклоняюсь в связи такого рода моментами. Я одобряю Ваши усилия по приведение к стандартам, но поскоку у меня много сомнений, остаюсь в стане болельщиков.
21 июл 10, 11:15    [9136107]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54794

Хммм... Оказывается, Оракул позволяет в базу загрузить не только инвалидные метаданные, но
и данные тоже: https://www.sql.ru/forum/actualthread.aspx?tid=776900
А что, вполне логично...

Posted via ActualForum NNTP Server 1.4

26 июл 10, 13:50    [9158495]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Dimitry Sibiryakov

Хммм... Оказывается, Оракул позволяет в базу загрузить не только инвалидные метаданные, но
и данные тоже: https://www.sql.ru/forum/actualthread.aspx?tid=776900
А что, вполне логично...


Есть предложения какие констрейнты вешать на кривые ручки вальнувшие текст в другой кодировке в виде RAW в CLOB???

Внимаем
26 июл 10, 13:54    [9158528]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54794

Gluk (Kazan)

Есть предложения какие констрейнты вешать на кривые ручки вальнувшие текст в другой
кодировке в виде RAW в CLOB???

Не, если индусы не сделали валидацию UTF8, то это не лечится.

Posted via ActualForum NNTP Server 1.4

26 июл 10, 13:57    [9158550]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Dimitry Sibiryakov

Gluk (Kazan)

Есть предложения какие констрейнты вешать на кривые ручки вальнувшие текст в другой
кодировке в виде RAW в CLOB???

Не, если индусы не сделали валидацию UTF8, то это не лечится.


Лили RAW, наплевав на любую валидацию
База сказала "Хазяина UTF8", как бы повел себя FB???
26 июл 10, 13:59    [9158564]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54794

Gluk (Kazan)
База сказала "Хазяина UTF8", как бы повел себя FB???

Сказала бы "пшолнах, malformed string". Нефиг выдавать win1251 за utf8.

Posted via ActualForum NNTP Server 1.4

26 июл 10, 14:06    [9158639]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Dimitry Sibiryakov

Gluk (Kazan)
База сказала "Хазяина UTF8", как бы повел себя FB???

Сказала бы "пшолнах, malformed string". Нефиг выдавать win1251 за utf8.
а как он отличает win1251 от utf8?
26 июл 10, 14:24    [9158792]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54794

SergSuper
а как он отличает win1251 от utf8?

Она и не различает, просто проверяет входные текстовые данные на соответствие заявленному
клиентскому character set (то, что в оракловском NLS_LANG идёт после точки).
В utf8 разрешены отнюдь не любые сочетания байт, поэтому если заявлена строка в utf8, а
подсунута в win1251, то скорее всего валидацию она не пройдёт.

Posted via ActualForum NNTP Server 1.4

26 июл 10, 14:31    [9158858]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Gluk (Kazan)
Member

Откуда:
Сообщений: 9365
Dimitry Sibiryakov

SergSuper
а как он отличает win1251 от utf8?

Она и не различает, просто проверяет входные текстовые данные на соответствие заявленному
клиентскому character set (то, что в оракловском NLS_LANG идёт после точки).
В utf8 разрешены отнюдь не любые сочетания байт, поэтому если заявлена строка в utf8, а
подсунута в win1251, то скорее всего валидацию она не пройдёт.


AI detected

Нетушки, когда льем RAW пусть уж лучше разрешает лить всякий бред, чем отшибает руки на основании того, что данные не понравились его AI
26 июл 10, 14:38    [9158934]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Dimitry Sibiryakov

SergSuper
а как он отличает win1251 от utf8?

Она и не различает, просто проверяет входные текстовые данные на соответствие заявленному
клиентскому character set (то, что в оракловском NLS_LANG идёт после точки).
В utf8 разрешены отнюдь не любые сочетания байт, поэтому если заявлена строка в utf8, а
подсунута в win1251, то скорее всего валидацию она не пройдёт.
да ну нафиг
а если я чего-то решил на каком-то своём новом языке написать?

т.е. можно спорить нужно это или нет, но как-то на Оракул позволяет в базу загрузить инвалидные данные не тянет
26 июл 10, 15:27    [9159317]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54794

SergSuper

как-то на Оракул позволяет в базу загрузить инвалидные данные не тянет

А какая именно часть этого утверждения "не тянет"? "Оракул"? Так Оракул. "Позволяет"? Так
позволяет ведь! "Загрузить"? Именно загрузить. "Инвалидные"? А как ещё назвать данные в
кодировке, не соответствующей кодировке базы, которые потом (при выборке) не могут быть
правильно отображены?.. "Данные"? Дык вроде бы данные...

Posted via ActualForum NNTP Server 1.4

26 июл 10, 15:53    [9159540]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
Dimitry Sibiryakov

SergSuper

как-то на Оракул позволяет в базу загрузить инвалидные данные не тянет

А какая именно часть этого утверждения "не тянет"? "Оракул"? Так Оракул. "Позволяет"? Так
позволяет ведь! "Загрузить"? Именно загрузить. "Инвалидные"? А как ещё назвать данные в
кодировке, не соответствующей кодировке базы, которые потом (при выборке) не могут быть
правильно отображены?.. "Данные"? Дык вроде бы данные...
кодировка - это же типа информация как надо отображать данные, а мало ли что клиент не может отобразить?
26 июл 10, 16:20    [9159784]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
hvlad
Member

Откуда:
Сообщений: 11554
SergSuper
кодировка - это же типа информация как надо отображать данные
Вот зачем говорить о том, в чём ничего не понимаешь ?
26 июл 10, 16:30    [9159853]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
hvlad
SergSuper
кодировка - это же типа информация как надо отображать данные
Вот зачем говорить о том, в чём ничего не понимаешь ?
да я уже понял, что кто с FB не работает, тот ничего в жизни не понимает
26 июл 10, 17:09    [9160203]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
hvlad
Member

Откуда:
Сообщений: 11554
SergSuper
hvlad
SergSuper
кодировка - это же типа информация как надо отображать данные
Вот зачем говорить о том, в чём ничего не понимаешь ?
да я уже понял, что кто с FB не работает, тот ничего в жизни не понимает
"информация как надо отображать данные" находится в файле со шрифтом, например.
Кодировка символов не имеет к этому отношения.

При чём тут FB ? Он конечно развивает способности, заставляя думать, но в данном случае и FB не поможет, увы :)
26 июл 10, 17:15    [9160241]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Siemargl
Member

Откуда: 010100
Сообщений: 6641
hvlad
SergSuper
кодировка - это же типа информация как надо отображать данные
Вот зачем говорить о том, в чём ничего не понимаешь ?


To be Nullor not to be Null в строках уже обсудили. Теперь новый виток - что такое символ, первична ли кодировка или значение =)
26 июл 10, 17:16    [9160245]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
hvlad
Member

Откуда:
Сообщений: 11554
Siemargl
Теперь новый виток - что такое символ, первична ли кодировка или значение =)
Я промолчал на
SergSuper
да ну нафиг
а если я чего-то решил на каком-то своём новом языке написать?
но на второй ляп уже не сдержался :)

Ну а насчёт витков - пинайте недовольного Ораклом DS'а :)
26 июл 10, 17:22    [9160279]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
hvlad
SergSuper
hvlad
SergSuper
кодировка - это же типа информация как надо отображать данные
Вот зачем говорить о том, в чём ничего не понимаешь ?
да я уже понял, что кто с FB не работает, тот ничего в жизни не понимает
"информация как надо отображать данные" находится в файле со шрифтом, например.
Кодировка символов не имеет к этому отношения.
и зачем же тогда в ХТМЛе это страницы написано <META content="text/html; charset=windows-1251">? вся ж информация как отображать есть в файле со шрифтом
26 июл 10, 19:12    [9160887]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
hvlad
Member

Откуда:
Сообщений: 11554
SergSuper
hvlad
"информация как надо отображать данные" находится в файле со шрифтом, например.
Кодировка символов не имеет к этому отношения.
и зачем же тогда в ХТМЛе это страницы написано <META content="text/html; charset=windows-1251">? вся ж информация как отображать есть в файле со шрифтом
Может для того, чтобы выбрать файл со шрифтом, в котором таки есть информация о том, как рисовать символы ?
26 июл 10, 22:36    [9161622]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
Yo.!
Guest
hvlad
Может для того, чтобы выбрать файл со шрифтом, в котором таки есть информация о том, как рисовать символы ?

в файле со шрифтом и так есть информация о том как рисовать символы
26 июл 10, 23:06    [9161716]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
SergSuper
Member

Откуда: SPb
Сообщений: 5488
hvlad
SergSuper
hvlad
"информация как надо отображать данные" находится в файле со шрифтом, например.
Кодировка символов не имеет к этому отношения.
и зачем же тогда в ХТМЛе это страницы написано <META content="text/html; charset=windows-1251">? вся ж информация как отображать есть в файле со шрифтом
Может для того, чтобы выбрать файл со шрифтом, в котором таки есть информация о том, как рисовать символы ?
то есть содержит информацию, какой файл нужно выбрать и соответственно как отобразить данные, не так ли?
26 июл 10, 23:34    [9161786]     Ответить | Цитировать Сообщить модератору
 Re: Все таки Oracle впереди планеты всей!  [new]
hvlad
Member

Откуда:
Сообщений: 11554
SergSuper
hvlad
SergSuper
hvlad
"информация как надо отображать данные" находится в файле со шрифтом, например.
Кодировка символов не имеет к этому отношения.
и зачем же тогда в ХТМЛе это страницы написано <META content="text/html; charset=windows-1251">? вся ж информация как отображать есть в файле со шрифтом
Может для того, чтобы выбрать файл со шрифтом, в котором таки есть информация о том, как рисовать символы ?
то есть содержит информацию, какой файл нужно выбрать и соответственно как отобразить данные, не так ли?
Не так.

После того, как было дано достаточное кол-во намёков, я даже не буду спрашивать - а что имеется в виду под словом отображать и при чём тут СУБД.
Мне этот цирк быстро надоедает, уж извините.
27 июл 10, 00:12    [9161834]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 .. 8 9 10 11 12 13 14 15 [16] 17   вперед  Ctrl
Все форумы / Сравнение СУБД Ответить