|
|
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
Решил попробовать базу, которая работает под ASA 8 запустить под ASA 9. Сходу наступил на пару граблей, обе на запросе Код: plaintext 1. 2. 3. 4. 5. 6. 7. Во-вторых матюкается на null value в аггрегатной функции, но это как раз точно лечится через allow_nulls_by_default, но в связи с этим вопрос можно ли как то эту настройку указать в командной строчке при запуске сервера? Какие еще подводные камни можно ожидать при переходе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 11:56 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhin пишет: > Решил попробовать базу, которая работает под ASA 8 запустить под ASA 9. > Сходу наступил на пару граблей Это же надо уметь... я под переход 8 -> 9 и 9 -> 10 не правил вообще ничего ;). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 12:31 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
Dim2000, молодец, а по теме что-то сказать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 12:36 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhin пишет: > а по теме что-то сказать? При переходе никаких граблей не обнаружено. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 13:06 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
Берем раздел "Что нового" от девятки. Читаем, думаем, смотрим в свой код на восьмерке, меняем, переделываем. Все остальное - при тестировании под 9 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 13:44 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
Dim2000, а как обойти то что я описал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 13:44 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhin, Опцией tsql_outer_joins у меня лечится при переходе с 7 на 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 13:47 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
antand пишет: > Опцией tsql_outer_joins у меня лечится при переходе с 7 на 11. Она тут вообще не при чём. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 14:15 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhin, Боюсь что не лечится оптимизатор другой, ты лучше выгрузи структуру базы в sql-скрипт и попробуй загрузить в 9-ку, там сразу и вылезят несовместимости... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 16:21 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhinВо-первых не хочет понимать соединение через where, когда меняю на inner join всё работает, вычитал, что вроде должно лечится через настройку tsql_outer_joins - не лечится. Во-вторых матюкается на null value в аггрегатной функции, но это как раз точно лечится через allow_nulls_by_default, но в связи с этим вопрос можно ли как то эту настройку указать в командной строчке при запуске сервера? 1. Бред. Что значит не хочет понимать. Приведите текст запроса и ответ сервера. 2. Это вроде от того, что клиента используете старого. Сервак шлет предупреждение. Девяточный клиент нормально их обрабатывает, те клиенты, которые ниже версией, выводят его как ошибку. Уже писал когда-то на форуме, могли бы в поиске найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 19:07 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
Sergey Orlovamakhin, Боюсь что не лечится оптимизатор другой, ты лучше выгрузи структуру базы в sql-скрипт и попробуй загрузить в 9-ку, там сразу и вылезят несовместимости... Боюсь что этот вариант не подойдет, запрос в процедуре, когда я запускаю альтер, то всё сохраняется на-ура, а при исполнении вылезает ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 16:52 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer 1. Бред. Что значит не хочет понимать. Приведите текст запроса и ответ сервера. 2. Это вроде от того, что клиента используете старого. Сервак шлет предупреждение. Девяточный клиент нормально их обрабатывает, те клиенты, которые ниже версией, выводят его как ошибку. Уже писал когда-то на форуме, могли бы в поиске найти. 1. Запрос уже привел, что там еще привести??? ответ сервера "illegal reference to correlation name t1" замена запроса на Код: plaintext 1. 2. 3. 4. 5. 6. 2. Да, клиент это и не видит как ошибку, но в 8-ке даже предупреждения не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 17:01 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhin, 1. Не держите людей за дураков. Я не просто так написал приведите текст запроса. На Ваш запрос мой сервер выдает ошибку "Syntax error near '.' on line 1". Уверяю, что соединение таблиц через WHERE в 9-ке работает на ура. И чтобы Вас ткнуть носом нужен полный текст запроса, а не Ваша интерпретация его. Illegal reference к примеру может означать, что Вы пытаетесь в условии по левому соединению table3 использовать поля из table1. Это говорит только о некорректности написания запроса, и то, что он работал раньше где-то, говорит скорее о фичи/баге той версии, чем о недоработке в этой. Старый оптимизатор не видел двусмысленности и глотал все что суют, а новый - видит. Писать запросы изначально нужно корректно, по стандарту, и никаких проблем не будет. 2. Под клиентом я подразумевал именно драйвер, установленный на клиенте(в случае ODBC соединения). Нужно глядеть его версию. Вы написали, что там у Вас грабли. Грабли, я понимаю как нарушение алгоритмики работы имеющегося ПО. Так вот, если Ваша программа спокойно работает и ничего не видит, то не вижу проблем. Если же Ваша программа встает в раскоряку из-за неспособности драйвера корректно обработать эту ситуацию, то обновите сабейзовского клиента, тогда в Вашей программе не будет нарушена алгоритмика работы, и после запроса она не будет уходить в исключение. Если трогать "allow_nulls_by_default", то это может аукнуться совершенно в другой степи, т.к. 9-ка и 6/7/8-ка по умолчанию работают одинаково, а вот с этой опцией 9-ка будет работать уже не как 6/7/8-ка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 18:04 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer, Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 18:19 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer, вы правы, если я меняю местами таблицы, то начинает работать. Но до сих пор не совсем понимаю какое имеет значение порядок таблиц в from. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 18:26 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhiniLLer, вы правы, если я меняю местами таблицы, то начинает работать. Но до сих пор не совсем понимаю какое имеет значение порядок таблиц в from. Судя по запросу, там именно то, что я и предположил. Проблема в том, что использование левого соединения подразумевает что в его условии используются только поля из соединяемых таблиц. Ссылаясь в условии левого соединения на третью свободную таблицу (t), сервер хочет вынести это условие на уровень выше, где t и подсоединяется к другим таблицам, т.е. на where запроса, но в этом случае пропадает смысл левого соединения, потому он и не может вынести. Указание в явном виде сначала соединения t и l по условию "t.LicNum = l.LicNum" дает право при подсоединении слева FinTreat в условии использовать ссылки на обе таблицы и на t и на l. Проблема не в порядке следования таблиц во from, а в том, что к чему подсоединяется и как это указывается. Три таблицы можно пересечь множеством способов и получить иное множество различных результатов. From - это не мясорубка. В Вашем случае есть два правильных варианта: Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. Если бы подключение таблицы ft требовало ссылок и на t и на l, то прошел бы только второй вариант. P.S.: Остается один вопрос. В чем сакраментальный смысл левого подсоединения, если по этой таблице берется сумма и только сумма? Там оно совершенно не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 20:19 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer, спасибо за подробное объяснение, я понял логику работы. Честно говоря, нельзя сказать что она прозрачна. Т.е., да по вашему объяснению все логично, но тем не менее нигде до этого не встречал разбора работы сайбейзовского селекта, хотя я с ASA знаком можно сказать поверхностно. Я бы мог предболожить что оптимизатор сделает full join из таблиц во from, потом приложит к ним left join и условия из where. В таком случае прошёл бы и мой первый вариант. (И почему-то уверен что он пройдёт в MS SQL хотя надо проверить) Сейчас я этот запрос и написал бы по вашему второму варианту, даже не зная подноготной работы оптимизатора, но этому коду уже лет 8, так что может и простительно. По поводу автор В чем сакраментальный смысл левого подсоединения, если по этой таблице берется сумма и только сумма? Там оно совершенно не нужно. А если в таблице fintreat не окажется ни одной записи для сущности из MaxInsur, то разве при inner join мы не потеряем эту запись из этой таблицы? PS есть ли какой-то запрос позволяющий вывести текст всех хранимых процедур из базы? PPS обнаружил что функции REWRITE тоже не нравится мой вариант, напишу наверно какой-то запрос или цикл с этой функцией по всем процедурам чтобы проверить их работоспособность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 22:38 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
уже обнаружил что тут работает sp_helptext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 22:40 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhin А если в таблице fintreat не окажется ни одной записи для сущности из MaxInsur, то разве при inner join мы не потеряем эту запись из этой таблицы? Потеряем. А разве потеряные строки смогут что-то изменить в Sum(ft.Finance), если в их случае ft.Finance is null, и они и так пролетят мимо кассы?!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 23:24 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer, насколько я помню логику программы там основная задача вывести полный список из MaxInsur, a соединение с FinTreat похоже было добавлено позже для добавочной информативности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 23:32 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhinпочему-то уверен что он пройдёт в MS SQL Ну вообще-то мы сейчас обсуждаем ASA, причём тут MSSQL ;)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2010, 00:49 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhin, Ну раз это нужно, значит надо с левым подсоединением. Только нужно экранировать Sum(isnull(ft.Finance,0)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2010, 08:51 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhinSergey Orlovamakhin, Боюсь что не лечится оптимизатор другой, ты лучше выгрузи структуру базы в sql-скрипт и попробуй загрузить в 9-ку, там сразу и вылезят несовместимости... Боюсь что этот вариант не подойдет, запрос в процедуре, когда я запускаю альтер, то всё сохраняется на-ура, а при исполнении вылезает ошибка. Я же сказал оптимизатор разный, кстати, если делать alter, то ничего не происходит, а вот если удалить, а затем создать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2010, 18:08 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
Sergey Orlov Я же сказал оптимизатор разный, кстати, если делать alter, то ничего не происходит, а вот если удалить, а затем создать... ....то тоже ничего не происходит. Как выявить такие запросы я написал выше. Кстати про разный оптимизатор это понятно, но это не ответ. Синтаксически запрос был правильный. Или всё таки кто-то знает место в документации описывающее эту особенность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2010, 21:55 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer, экранировать или нет - это как раз зависит от обработки на клиенте, и смысл будет разные или отсутсвие записей или нулевые обороты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2010, 21:57 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhiniLLer, экранировать или нет - это как раз зависит от обработки на клиенте, и смысл будет разные или отсутсвие записей или нулевые обороты. Ну тогда не экранируйте. Обновите клиента и будет счастье. P.S. left outer join делается не ко всем перечисленным до него таблицам через запятую, а к одной сущности. В качестве такой сущности может идти соединение других таблиц. Запятая не является соединением. Поэтому конструкция Код: plaintext 1. Если и читать, то только ANSI SQL, ASA тут ни причем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2010, 22:42 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhinСинтаксически запрос был правильный Нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2010, 22:50 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLerПоэтому конструкция Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2010, 00:40 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
White OwlВообще-то, эта конструкция вполне даже работающая. Она не чиста с точки зрения стандартов, но все сервера где я ее пробовал (включая ASE 7-11) прекрасно ее отрабатывают. Хм. Если спичка лезет в замочную скважину, это еще не значит, что это ключ. Если оптимизатор пропускает такую конструкцию, значит он ОДНОЗНАЧНО считает, что сначала перемножит две таблицы A и B, и только после этого приступает к рассмотрению возможностей подсоединения третьей, C. Не очень умный оптимизатор, так скажем. Откуда ему заранее известно, что так будет проще, а не сначала соединить B и C, и только потом перемножить с A?! Ему это не может быть известно, а значит множество потенциальных планов изначально искусственно ограничено, и внедрен именно такой подход к разбору синтаксиса. "Работающая" еще не значит корректная. Примерно тоже самое, что написать в where условие "0/0=0/0", вроде ничего не меняет, однако некорректно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2010, 22:17 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLerWhite OwlВообще-то, эта конструкция вполне даже работающая. Она не чиста с точки зрения стандартов, но все сервера где я ее пробовал (включая ASE 7-11) прекрасно ее отрабатывают. Хм. Если спичка лезет в замочную скважину, это еще не значит, что это ключ. Если оптимизатор пропускает такую конструкцию, значит он ОДНОЗНАЧНО считает, что сначала перемножит две таблицы A и B, и только после этого приступает к рассмотрению возможностей подсоединения третьей, C.Вообще-то, он сначала сделает B&C, а потом добавит A. iLLer"Работающая" еще не значит корректная.А с этим я не спорю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2010, 23:18 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
White OwlВообще-то, он сначала сделает B&C, а потом добавит A. Я наверно "не въехал". А как он сможет???? Если для соединения B и C ему нужно посчитать условие "C.a=A.b", а в нем упоминается еще не проявленная A... Возможно оптимизаторы пропускающее такое и не такие простые. Видимо есть какое-то объяснение для существования такой конструкции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 00:24 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLerWhite OwlВообще-то, он сначала сделает B&C, а потом добавит A. Я наверно "не въехал". А как он сможет???? Если для соединения B и C ему нужно посчитать условие "C.a=A.b", а в нем упоминается еще не проявленная A... Возможно оптимизаторы пропускающее такое и не такие простые. Видимо есть какое-то объяснение для существования такой конструкции.эээ.... прошу прощения, я не внимательно посмотрел на селект что с чем связывается. В общем то да, без приведения этого к единому знаменателю, в смысле без перевода связей в тот или другой синтаксис эту фигню не разобрать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 00:52 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer wrote: > Хм. Если спичка лезет в замочную скважину, это еще не значит, что это ключ. > Если оптимизатор пропускает такую конструкцию, значит он ОДНОЗНАЧНО > считает, что сначала перемножит две таблицы A и B, и только после этого > приступает к рассмотрению возможностей подсоединения третьей, C. Форма записи SQL-запроса никак не связана со способом его обработки. Ну и стало быть все остальные "выводы" также неоправданы. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 09:40 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Наверно Вы хотели сказать, что форма записи не должна определять способ выполнения. Конечно, в теории это так и есть. Я говорил лишь про сервера, которые глотают такую фигню. И факт этого глотания говорит лишь об одном, что некорректность соединения B и C сервер может не заметить только в одном случае, когда он априори и не пытается проанализировать эту возможность. В противном случае он бы возвращал ошибку. А раз не возвращает, значит подход к анализу усеченный. Я правильно Вас понимаю, что Вы допускаете возможность существования некоего гипотетического сервера, который бы с одной стороны молча принимал такую конструкцию, а с другой, при построении плана выполнения заценивал все возможные стоимости включая подход сначала B и C, а потом перемножение с A?! И, очевидно, натыкаясь на ошибку тупо отбрасывал этот план с неудавшейся стоимостью, а оставлял тот, который позволил бы выполнить запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 15:08 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer wrote: > Наверно Вы хотели сказать, что форма записи не должна определять способ > выполнения. Конечно, в теории это так и есть. Это и на практике такое есть. Я говорил лишь про > сервера, которые глотают такую фигню. И факт этого глотания говорит лишь > об одном, что некорректность соединения B и C сервер может не заметить > только в одном случае, когда он априори и не пытается проанализировать > эту возможность. В противном случае он бы возвращал ошибку. А раз не > возвращает, значит подход к анализу усеченный. Что-то очень мало смысла в вышеприведённом. В чём по-твоему заключается "некорректность соединения B и C" ? > Я правильно Вас понимаю, что Вы допускаете возможность существования > некоего гипотетического сервера, который бы с одной стороны молча > принимал такую конструкцию, а с другой, при построении плана выполнения > заценивал все возможные стоимости включая подход сначала B и C, а потом > перемножение с A?! Я не допускаю, я просто знаю, что они есть. И, очевидно, натыкаясь на ошибку тупо отбрасывал этот > план с неудавшейся стоимостью, а оставлял тот, который позволил бы > выполнить запрос? Отбрасывает сервер какие-то планы или нет -- никак не связано с способом записи JOIN-а в запросе. Что FROM A,B left outer join C on C.a=A.b WHERE A.c=B.d что FROM A join B on A.c=B.d left outer join C on C.a=A.b Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 15:21 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
MasterZiv, Может Вы тоже не заметили "прикола"? Хорошо. Гипотетический сервер существует. Представим, что мы это он. Попытаемся заценить стоимость обработки запроса в случае, когда мы сначала хотим пересечь B и C, и только потом A. Чтобы посчитать общую стоимость, нужно посчитать стоимость частей. Какова будет стоимость "B left outer join C on C.a=A.b"? Вы можете прикинуть, при условии, что Вы вообще не знаете что такое A.b, т.к. отложили A на потом! Оценка невозможна, т.к. на соединение B и C нельзя наложить условие "C.a=A.b". Вот и ошибка синтаксиса. Поэтому, либо слепой оптимизатор, либо ошибка синтаксиса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 16:26 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer wrote: > Может Вы тоже не заметили "прикола"? > Хорошо. Гипотетический сервер существует. Представим, что мы это он. > Попытаемся заценить стоимость обработки запроса в случае, когда мы > сначала хотим пересечь B и C, и только потом A. A нельзя после C. C -- внутренняя. Можно только A, B, C либо B, A, C либо A, C, B > вообще не знаете что такое A.b, т.к. отложили A на потом! Оценка > невозможна, т.к. на соединение B и C нельзя наложить условие "C.a=A.b". Здесь нет никакой ошибки синтаксиса. По семантике операции left outer join A должно быть перед С. А вот при чём тут B, или как его JOIN записан -- не понятно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 17:03 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLerЯ правильно Вас понимаю, что Вы допускаете возможность существования некоего гипотетического сервера, который бы с одной стороны молча принимал такую конструкцию, а с другой, при построении плана выполнения заценивал все возможные стоимости включая подход сначала B и C, а потом перемножение с A?! И, очевидно, натыкаясь на ошибку тупо отбрасывал этот план с неудавшейся стоимостью, а оставлял тот, который позволил бы выполнить запрос? Погоди, о каком гипотетическом серевере ты говоришь? У нас в рассмотрении совершенно не гипотетический, а вполне реальный ASA9. В котором оптимизатор ВСЕГДА переводит любые связи между таблицами в JOIN синтакс прежде чем начинает строить планы. Это было одной из рекламных завлекаловок когда девятка выходила. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 19:55 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
White OwliLLerЯ правильно Вас понимаю, что Вы допускаете возможность существования некоего гипотетического сервера, который бы с одной стороны молча принимал такую конструкцию, а с другой, при построении плана выполнения заценивал все возможные стоимости включая подход сначала B и C, а потом перемножение с A?! И, очевидно, натыкаясь на ошибку тупо отбрасывал этот план с неудавшейся стоимостью, а оставлял тот, который позволил бы выполнить запрос? Погоди, о каком гипотетическом серевере ты говоришь? У нас в рассмотрении совершенно не гипотетический, а вполне реальный ASA9. В котором оптимизатор ВСЕГДА переводит любые связи между таблицами в JOIN синтакс прежде чем начинает строить планы. Это было одной из рекламных завлекаловок когда девятка выходила. Вот поэтому, 9-ка и выдает оишбку в отличии от 8-ки... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2010, 22:26 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
MasterZiv Здесь нет никакой ошибки синтаксиса. По семантике операции left outer join A должно быть перед С. А вот при чём тут B, или как его JOIN записан -- не понятно. Я кажется понял на что Вы намекаете. Т.е., следуя Вашим утверждениям, следующий запрос уже имеет ошибку синтаксиса, т.к. A упоминается не перед, а после C?! Код: plaintext 1. 2. Но, позвольте, разве от изменения порядка следования перечисляемых что-то меняется? Так скажем, должно ли меняться? Сдается мне, что по стандарту SQL такого быть не должно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2010, 10:00 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer wrote: > Я кажется понял на что Вы намекаете. Т.е., следуя Вашим утверждениям, > следующий запрос уже имеет ошибку синтаксиса, т.к. A упоминается не > перед, а после C?! > > SELECT * > FROM B left outer join C on C.a=A.b,A > WHERE A.c=B.d Я не знаю, можно ли в конкретно этой СУБД так писать. Давайте предположим, что можно. Тогда никакой ошибки тут не будет. > Но, позвольте, разве от изменения порядка следования перечисляемых > что-то меняется? Нет. Так скажем, должно ли меняться? нет. Сдается мне, что по > стандарту SQL такого быть не должно. Чего ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2010, 10:19 |
|
||
|
|

start [/forum/topic.php?all=1&fid=55&tid=2010745]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
142ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 258ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...