Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вычисления по сокращенной схеме в PSQL / 8 сообщений из 8, страница 1 из 1
09.09.2014, 15:59
    #38741921
Interloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления по сокращенной схеме в PSQL
В процедурном расширении языка вычисление логических выражений с помощью операторов AND и OR происходит по сокращенной схеме вычислений (то есть в выражении A AND B, B будет вычисляться только в случае A= True) или нет? В документации не нашел ответа на данный вопрос.
...
Рейтинг: 0 / 0
09.09.2014, 16:18
    #38741951
Симонов Денис
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления по сокращенной схеме в PSQL
Interloper,

по сокращённой

Код: sql
1.
2.
3.
select count(*)
from rdb$types
where 1=1 or (select count(*) from rdb$types)=469



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
------ Информация о производительности ------
Время подготовки запроса = 16ms
Время выполнения запроса = 0ms
Среднее время на получение одной записи = 0,00 ms
Current memory = 17 737 028
Max memory = 17 789 216
Memory buffers = 1 024
Reads from disk to cache = 0
Writes from cache to disk = 0
Чтений из кэша = 469

vs

Код: sql
1.
2.
3.
select count(*)
from rdb$types
where 1=0 or (select count(*) from rdb$types)=469



Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
------ Информация о производительности ------
Время подготовки запроса = 16ms
Время выполнения запроса = 0ms
Среднее время на получение одной записи = 0,00 ms
Current memory = 17 737 108
Max memory = 17 789 216
Memory buffers = 1 024
Reads from disk to cache = 0
Writes from cache to disk = 0
Чтений из кэша = 930
...
Рейтинг: 0 / 0
09.09.2014, 16:38
    #38741975
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления по сокращенной схеме в PSQL
Interloper,

начиная с 2.5, под любыми платформами в where выражения вычисляются cлева направо.
http://tracker.firebirdsql.org/browse/CORE-1971

хотя тут 7365713 якобы написано, что right-to-left.

Однако, элементарно проверяется
Код: sql
1.
2.
select * from rdb$database
where 1=(1/0) or 1=1


выдает ошибку, значит слева направо.

Код: sql
1.
2.
select * from rdb$database
where 1=1 or 1=(1/0)


не выдает ошибку, действительно слева направо.

Поэтому, что "тяжелее", нужно располагать справа, что легче - слева.
...
Рейтинг: 0 / 0
09.09.2014, 16:41
    #38741985
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления по сокращенной схеме в PSQL
Interloper,

и, в конфиге есть параметр, которым сокращенную схему можно отключить.
...
Рейтинг: 0 / 0
10.09.2014, 05:55
    #38742371
Interloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления по сокращенной схеме в PSQL
kdv,

Какой?
...
Рейтинг: 0 / 0
10.09.2014, 05:57
    #38742372
Interloper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления по сокращенной схеме в PSQL
Меня так же интересуют выражения в коде процедур, а не только в предложении where.
...
Рейтинг: 0 / 0
10.09.2014, 07:56
    #38742404
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления по сокращенной схеме в PSQL
InterloperКакой?
а ты прочитай конфиг. Там что, дохрена параметров?

InterloperМеня так же интересуют выражения в коде процедур, а не только в предложении where.
какая разница? В общем, читай конфиг. там все параметры расписаны, найдешь свой за 1-2 минуты.
...
Рейтинг: 0 / 0
10.09.2014, 08:19
    #38742413
Exteris
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вычисления по сокращенной схеме в PSQL
CompleteBooleanEvaluation
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Вычисления по сокращенной схеме в PSQL / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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