Утверждения в снежинке - PullRequest
0 голосов
/ 06 ноября 2019

Есть ли способ выполнить утверждения в Snowflake?

По сути, я пытаюсь провести небольшое тестирование / TDD, и мне нужен механизм, аналогичный утверждениям на любом другом языке:

  • Если подтверждение выполнено успешно, оно возвращает true (и / или печатает сообщение об успешном завершении).
  • Если подтверждение не выполнено, возникает исключение.

1 Ответ

2 голосов
/ 06 ноября 2019

Я не смог найти никакого способа выполнения утверждений в Snowflake, поэтому в итоге я создал свой собственный, используя JavaScript UDF:

CREATE OR REPLACE FUNCTION assert(VALUE STRING, TEST STRING)
  RETURNS STRING
  LANGUAGE JAVASCRIPT
AS
$$
  if (VALUE === TEST) {
    return `True ('${VALUE}' = '${TEST}')`;
  } else {
    throw `Assertion failed: '${VALUE}' != '${TEST}'`
  }
$$
;

/* Tests should all return true */
SELECT assert(true, true);
SELECT assert('string', 'string');
SELECT assert(123, 123);
SELECT assert('123', 123);

/* Tests should all fail and throw exceptions */
SELECT assert(true, false);
SELECT assert('string1', 'string2');
SELECT assert(12345, 54321);
SELECT assert('123', 321);
...