Skip to content

Releases: Query-farm/clickhouse-sql

v1.0.12

Choose a tag to compare

@lmangani lmangani released this 07 Jun 22:05
b992342

What's Changed

Full Changelog: v1.0.10...v1.0.12

v1.0.10

Choose a tag to compare

@akvlad akvlad released this 04 Apr 20:21
9b19082

What's Changed

  • debug order_by field index calculation by @akvlad in #24

Full Changelog: v1.0.9...v1.0.10

v1.0.9

Choose a tag to compare

@akvlad akvlad released this 20 Mar 09:27
6c28785

What's Changed

  • Fix/read parquet mergetree by @akvlad in #22
  • feat: publish extensions on internal release by @akvlad in #23

Full Changelog: v1.0.7...v1.0.9

v1.0.7

Choose a tag to compare

@lmangani lmangani released this 04 Jan 22:31
16bcb5b

What's Changed

Full Changelog: v1.0.6...v1.0.7

v1.0.6

Choose a tag to compare

@lmangani lmangani released this 07 Nov 19:00
9ab2e81

What's Changed

  • Fix arrayMap #16
  • Extended ch_scan to support multiple formats (JSON*, CSV*, Parquet, etc)
  • More Macros by @lmangani in #15
  • Fix Documentation for url function #17
    Full Changelog: v1.0.5...v1.0.6

v1.0.5

Choose a tag to compare

@lmangani lmangani released this 13 Oct 13:52
a000d4f

What's Changed

  • Feature: read_parquet_mergetree by @akvlad in #13

New Contributors

Full Changelog: v1.0.4...v1.0.5

v1.0.4

Choose a tag to compare

@lmangani lmangani released this 23 Sep 12:40
9ba26a1

What's Changed

Full Changelog: v1.0.3...v1.0.4

v1.0.3

Choose a tag to compare

@lmangani lmangani released this 09 Sep 22:39
2e68607

What's Changed

Full Changelog: v1.0.2...v1.0.3

v1.0.2

Choose a tag to compare

@lmangani lmangani released this 13 Jul 12:31
aca475f

What's Changed

Supported Macros

toString (CAST(x AS VARCHAR))
toInt8 (CAST(x AS INT8))
toInt16 (CAST(x AS INT16))
toInt32 (CAST(x AS INT32))
toInt64 (CAST(x AS INT64))
toInt128 (CAST(x AS INT128))
toInt256 (CAST(x AS HUGEINT))
toInt8OrZero (CASE WHEN TRY_CAST(x AS INT8) IS NOT NULL THEN CAST(x AS INT8) ELSE 0 END)
toInt16OrZero (CASE WHEN TRY_CAST(x AS INT16) IS NOT NULL THEN CAST(x AS INT16) ELSE 0 END)
toInt32OrZero (CASE WHEN TRY_CAST(x AS INT32) IS NOT NULL THEN CAST(x AS INT32) ELSE 0 END)
toInt64OrZero (CASE WHEN TRY_CAST(x AS INT64) IS NOT NULL THEN CAST(x AS INT64) ELSE 0 END)
toInt128OrZero (CASE WHEN TRY_CAST(x AS INT128) IS NOT NULL THEN CAST(x AS INT128) ELSE 0 END)
toInt256OrZero (CASE WHEN TRY_CAST(x AS HUGEINT) IS NOT NULL THEN CAST(x AS HUGEINT) ELSE 0 END)
toInt8OrNull (TRY_CAST(x AS INT8))
toInt16OrNull (TRY_CAST(x AS INT16))
toInt32OrNull (TRY_CAST(x AS INT32))
toInt64OrNull (TRY_CAST(x AS INT64))
toInt128OrNull (TRY_CAST(x AS INT128))
toInt256OrNull (TRY_CAST(x AS HUGEINT))
toUInt8 (CAST(x AS UTINYINT))
toUInt16 (CAST(x AS USMALLINT))
toUInt32 (CAST(x AS UINTEGER))
toUInt64 (CAST(x AS UBIGINT))
toUInt8OrZero (CASE WHEN TRY_CAST(x AS UTINYINT) IS NOT NULL THEN CAST(x AS UTINYINT) ELSE 0 END)
toUInt16OrZero (CASE WHEN TRY_CAST(x AS USMALLINT) IS NOT NULL THEN CAST(x AS USMALLINT) ELSE 0 END)
toUInt32OrZero (CASE WHEN TRY_CAST(x AS UINTEGER) IS NOT NULL THEN CAST(x AS UINTEGER) ELSE 0 END)
toUInt64OrZero (CASE WHEN TRY_CAST(x AS UBIGINT) IS NOT NULL THEN CAST(x AS UBIGINT) ELSE 0 END)
toUInt8OrNull (TRY_CAST(x AS UTINYINT))
toUInt16OrNull (TRY_CAST(x AS USMALLINT))
toUInt32OrNull (TRY_CAST(x AS UINTEGER))
toUInt64OrNull (TRY_CAST(x AS UBIGINT))
toFloat (CAST(x AS DOUBLE))
toFloatOrNull (TRY_CAST(x AS DOUBLE))
toFloatOrZero (CASE WHEN TRY_CAST(x AS DOUBLE) IS NOT NULL THEN CAST(x AS DOUBLE) ELSE 0 END)
intDiv ((CAST(a AS BIGINT) // CAST(b AS BIGINT)))
intDivOrNull (TRY_CAST((TRY_CAST(a AS BIGINT) // TRY_CAST(b AS BIGINT)) AS BIGINT))
intDivOZero (COALESCE((TRY_CAST((TRY_CAST(a AS BIGINT) // TRY_CAST(b AS BIGINT)) AS BIGINT)),0))
plus (add(a, b))
minus (subtract(a, b))
modulo (CAST(a AS BIGINT) % CAST(b AS BIGINT))
moduloOrZero (COALESCE(((TRY_CAST(a AS BIGINT) % TRY_CAST(b AS BIGINT))),0))
tupleIntDiv (apply(a, (x,i) -> apply(b, x -> CAST(x AS BIGINT))[i] // CAST(x AS BIGINT)))
tupleIntDivByNumber (apply(a, (x) -> CAST(apply(b, x -> CAST(x AS BIGINT))[1] as BIGINT) // CAST(x AS BIGINT)))
tupleDivide (apply(a, (x,i) -> apply(b, x -> CAST(x AS BIGINT))[i] / CAST(x AS BIGINT)))
tupleMultiply (apply(a, (x,i) -> CAST(apply(b, x -> CAST(x AS BIGINT))[i] as BIGINT) * CAST(x AS BIGINT)))
tupleMinus (apply(a, (x,i) -> apply(b, x -> CAST(x AS BIGINT))[i] - CAST(x AS BIGINT)))
tuplePlus (apply(a, (x,i) -> apply(b, x -> CAST(x AS BIGINT))[i] + CAST(x AS BIGINT)))
tupleMultiplyByNumber (apply(a, (x) -> CAST(apply(b, x -> CAST(x AS BIGINT))[1] as BIGINT) * CAST(x AS BIGINT)))
tupleDivideByNumber (apply(a, (x) -> CAST(apply(b, x -> CAST(x AS BIGINT))[1] as BIGINT) / CAST(x AS BIGINT)))
tupleModulo (apply(a, (x) -> CAST(apply(b, x -> CAST(x AS BIGINT))[1] as BIGINT) % CAST(x AS BIGINT)))
tupleModuloByNumber (apply(a, (x) -> CAST(apply(b, x -> CAST(x AS BIGINT))[1] as BIGINT) % CAST(x AS BIGINT)))
tupleConcat (list_concat(a, b))
match (string LIKE token)
arrayExists (haystack @> ARRAY[needle])
arrayMap (array_transform(arr, e -> (e * e)))
toYear (EXTRACT(YEAR FROM date_expression))
toMonth (EXTRACT(MONTH FROM date_expression))
toDayOfMonth (EXTRACT(DAY FROM date_expression))
toHour (EXTRACT(HOUR FROM date_expression))
toMinute (EXTRACT(MINUTE FROM date_expression))
toSecond (EXTRACT(SECOND FROM date_expression))
toYYYYMM (DATE_FORMAT(date_expression, '%Y%m'))
toYYYYMMDD (DATE_FORMAT(date_expression, '%Y%m%d'))
toYYYYMMDDhhmmss (DATE_FORMAT(date_expression, '%Y%m%d%H%M%S'))
formatDateTime (CASE WHEN timezone IS NULL THEN strftime(time, format) ELSE strftime(time AT TIME ZONE timezone, format) END)
empty (LENGTH(str) = 0)
notEmpty (LENGTH(str) > 0)
lengthUTF8 (LENGTH(str))
leftPad (LPAD(str, length, pad_str))
rightPad (RPAD(str, length, pad_str))
extractAllGroups (regexp_extract_all(text, pattern))
toFixedString (RPAD(LEFT(str, length), length, '\0'))
ifNull (COALESCE(x, y))
arrayJoin (UNNEST(arr))
splitByChar (string_split(str, separator))
protocol (REGEXP_EXTRACT(url, '^(\w+)://', 1))
domain (REGEXP_EXTRACT(url, '://([^/]+)', 1))
topLevelDomain (REGEXP_EXTRACT(url, '.([^./:]+)([:/]|$)', 1))
path (REGEXP_EXTRACT(url, '://[^/]+(/.*)', 1))
IPv4NumToString (CONCAT(CAST((num >> 24) & 255 AS VARCHAR), '.', CAST((num >> 16) & 255 AS VARCHAR), '.', CAST((num >> 8) & 255 AS VARCHAR), '.', CAST(num & 255 AS VARCHAR)))
IPv4StringToNum (CAST(SPLIT_PART(ip, '.', 1) AS INTEGER) * 256 * 256 * 256 + CAST(SPLIT_PART(ip, '.', 2) AS INTEGER) * 256 * 256 + CAST(SPLIT_PART(ip, '.', 3) AS INTEGER) * 256 + CAST(SPLIT_PART(ip, '.', 4) AS INTEGER))
generateUUIDv4 (toString(uuid()))
parseURL (CASE part WHEN 'protocol' THEN REGEXP_EXTRACT(url, '^(\w+)://') WHEN 'domain' THEN REGEXP_EXTRACT(url, '://([^/:]+)') WHEN 'port' THEN REGEXP_EXTRACT(url, ':(\d+)') WHEN 'path' THEN REGEXP_EXTRACT(url, '://[^/]+(/.+?)(?|#|$)') WHEN 'query' THEN REGEXP_EXTRACT(url, '?([^#]+)') WHEN 'fragment' THEN REGEXP_EXTRACT(url, '#(.+)$') END)
bitCount (BIT_COUNT(num))

v1.0.0

Choose a tag to compare

@lmangani lmangani released this 09 Jul 17:18
21c240e

What's Changed

New Contributors

Full Changelog: https://github.com/lmangani/duckdb-extension-clickhouse-sql/commits/v1.0.0