https://docs.snowflake.com/en/sql-reference/functions/to_date.html#usage-notes
7) Или давайте трактовать параметры как... как-нибудь!
SELECT next_day(current_date(), 'Friday-night'); -- ok!
Приблизительно так же при использовании COLLATE - там можно все :)
Я понимаю, что часто строгость бывает избыточной. Но представьте, что все эти функции используются в ETL процессах, после которых не узнать как данные выглядели в источнике.
Что мне делать с 1.032626705 после "округления"?
А что мне делать с датами, полученными из TO_DATE на границе перехода параметров?
Или на сколько можно доверять next_day, если в параметр попадет случайный кусок текста?
Вот эти два запроса вернут одинаковый результат:
SELECT next_day(current_date(), a)8) Алиасы могут совпадать с ключевыми словами.
FROM (VALUES
('friday'), ('fr'), ('fri')
) t(a);
SELECT next_day(current_date(), a)
FROM (VALUES
('freedom'), ('frozen'), ('france')
) t(a);
Это валидный синтаксис:
SELECT * FROM EMPLOYEES LIMIT LIMIT 1;9) Совершенно неочевидное автоматическое приведение типов.
Подозреваю, что не один я смущен таким поведением (Snowflake vs PostgreSQL):
-- SNOWFLAKE10) Возможно удалить объекты, имеющие зависимые объекты.
SELECT
typeof(1 % 2), -- INTEGER
typeof(1.0 % 2), -- INTEGER
typeof(1 % 2.0), -- INTEGER
typeof(1 % 1.2), -- DECIMAL
typeof(4.5 % 1.2) -- DECIMAL
;
-- POSTGRESQL
SELECT
pg_typeof(1 % 2), -- integer
pg_typeof(1.0 % 2), -- numeric
pg_typeof(1 % 2.0), -- numeric
pg_typeof(1 % 1.2), -- numeric
pg_typeof(4.5 % 1.2) -- numeric
;
Запросто можно удалить таблицу, от которой зависит VIEW. Или таблицу, или у которой есть зависимые STREAMS.
Из VIEW станет невозможно получить данные, а все объекты-сироты будут видны при экспорте DDL.
Я отлично понимаю, что все что происходило на этой неделе тревожит довольно небольшое количество людей в реальной жизни.
Отвечу словами Марти Макфлая из "Назад в будущее-2":
Наверное, вы еще не готовы к такой музыке, но вашим детям она понравится.
:)
Люди ненадежны, тормозят при обработке большого количества информации, ломаются при быстро растущей сложности и не умеют эффективно передавать знания.
Отсутствие строгости ведет к дырам в безопасности и ошибках в принимаемых человеком решениях.
Смысл работы любого разработчика ПО заключается в уменьшение энтропии :)
Я стараюсь формализовать то, что раньше формализовать не получалось.
И, возможно, некоторым из вас это могло показаться перебором. Для таких я останусь еще одним сумасшедшим дедом :)