powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / разминка для мозга
14 сообщений из 14, страница 1 из 1
разминка для мозга
    #39264820
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кто не запуская скрипт скажет, что произойдет?
Код: sql
1.
select t from (select )t


ответы желательно не писать, а только то что угадали или не ожидали такой поворот?
...
Рейтинг: 0 / 0
разминка для мозга
    #39264840
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legushka,

Синтаксическая ошибка же?..
...
Рейтинг: 0 / 0
разминка для мозга
    #39264845
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
версия 9.4 и версия 9.5
в том то и фишка что нет ошибки
...
Рейтинг: 0 / 0
разминка для мозга
    #39264850
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Legushka,

Ну да... всё сводиться к тому, что просто
Код: sql
1.
SELECT ;

является допустимым запросом. Интересно — зачем?..
...
Рейтинг: 0 / 0
разминка для мозга
    #39265567
Jonhson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
явное отклонение от стандарта
...
Рейтинг: 0 / 0
разминка для мозга
    #39267357
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
lexa=> select union select;
--
(2 строки)

lexa=> select except select;
--
(2 строки)


Точно отклонение. :)
...
Рейтинг: 0 / 0
разминка для мозга
    #39267387
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBat,
отклонение с арифметической прогрессией:
Код: sql
1.
2.
3.
select except select except select except select
--
(4 строки)
...
Рейтинг: 0 / 0
разминка для мозга
    #39267391
Jonhson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
когда это пофиксят?
...
Рейтинг: 0 / 0
разминка для мозга
    #39267402
Фотография vyegorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBat
Код: sql
1.
2.
3.
4.
5.
6.
7.
lexa=> select union select;
--
(2 строки)

lexa=> select except select;
--
(2 строки)


Точно отклонение. :)
А отклонение по какому пункту? Я мало знаком со стандартами, потому и спрашиваю.


Реляционная модель основана на математических множествах. Множествами являются и заголовки реляций, и сами реляции.
Именно отсюда следуют такие свойства, как:
отсутствие дубликатов

отсутствие NULL значений

допустимость пустых множеств, как в самих реляциях, так и в их заголовках.
(Об этом говорит Chris Date в своих книгах.)

Теоретически, выборка с "отсутствием" аттрибутов допустима
...
Рейтинг: 0 / 0
разминка для мозга
    #39267474
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBat
Код: sql
1.
2.
3.
4.
5.
6.
7.
lexa=> select union select;
--
(2 строки)

lexa=> select except select;
--
(2 строки)


Точно отклонение. :)

появилось позже 9.3 ( в 9.3 -- ошибка синтакса)

думаю пустое множество пустого множества атрибутов может вести себя как угодно.

но тут -- да, несколько неожыданное поведение except--ов.
...
Рейтинг: 0 / 0
разминка для мозга
    #39267506
Фотография Legushka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonhsonкогда это пофиксят?зачем фиксить? когда это заревизят в другие бд? =)
...
Рейтинг: 0 / 0
разминка для мозга
    #39268116
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выходит, что (select) возвращает row():
Код: sql
1.
with a as (select) select a = row() from a;


Постгрес может создать пустой row() и даже пустой тип.
Кажется, у него всего два возможных значения - row() и NULL.
Код: sql
1.
create type empty as ();


При этом, конечно-же, row() не является NULL-ом:
Код: sql
1.
select row() is distinct from null;


Но вот странность, row() является одновременно IS NULL и IS NOT NULL:
Код: sql
1.
select row() is null, row() is not null;


В доке приводится пример обоих false значений, но не обоих true.
авторBecause of this behavior, IS NULL and IS NOT NULL do not always return inverse results for row-valued expressions, i.e., a row-valued expression that contains both NULL and non-null values will return false for both tests.
...
Рейтинг: 0 / 0
разминка для мозга
    #39268127
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vyegorov,

UNION должен объединить удалив дубликаты. И он это делает, например, для "SELECT 1", но не для пустого "SELECT". Аналогичная непонятка с EXCEPT.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
with a as (select 1)
select * from a
union select * from a;

 ?column? 
----------
        1
(1 строка)


Код: sql
1.
2.
3.
4.
5.
6.
with a as (select)
select * from a
union select * from a;

--
(2 строки)
...
Рейтинг: 0 / 0
разминка для мозга
    #39268146
Jonhson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хватит уже банальные баги называть "непонятками"
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / разминка для мозга
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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