From 40c0fefb616c0582b9c37a37459f4beff716f4dd Mon Sep 17 00:00:00 2001 From: Kevin Longe <273747162+kvlonge@users.noreply.github.com> Date: Wed, 11 Nov 2026 05:30:11 +0000 Subject: [PATCH] fix(deps): pin SQLQuack 0.5.1 and SQLClean 0.8.3 SQLQuack 0.5.1 binds LAG and LEAD with one or two arguments on DuckDB, comma-joined LATERAL subqueries that read an earlier FROM item, and lambdas over aggregates in grouped queries, all of which 0.210.0 rejects. It types DuckDB JSON casts, to_json and AT TIME ZONE outputs, so they prove JSON and TIMESTAMP contract types, and gives a column merged by a set operation its strongest branch's transform kind. SQLClean 0.8.3 is built on the same SQLQuack release, so the lockfile holds one copy of each SQLQuack crate. Six Python-oracle goldens are re-recorded: 127 digest lines only. Restoring the merged set-operation columns' old transform kinds in the new canonical views reproduces every old digest. DuckShop's edge-case area gains LAG and LEAD with one to three arguments, a comma-joined LATERAL over a nested derived table, and untyped and typed FILTER lambdas over ARRAY_AGG in a grouped query. Their expectations are derived by hand and cross-checked in DuckDB, because the Snowflake capture could not run. The DuckDB-only shapes are E2E cases in test_dialect_syntax.py. --- Cargo.lock | 68 +++--- Cargo.toml | 24 +- benchmarks/duckshop/README.md | 6 +- .../int_edge_basket_grouped_sku_filters.sql | 35 +++ .../int_edge_basket_line_neighbours.sql | 34 +++ .../int_edge_basket_line_sku_parts.sql | 32 +++ .../duckshop/project/sqlbuild_project.toml | 8 + ...st_int_edge_basket_grouped_sku_filters.sql | 27 +++ .../test_int_edge_basket_line_neighbours.sql | 41 ++++ .../test_int_edge_basket_line_sku_parts.sql | 37 ++++ .../main/compile/test_dialect_syntax.py | 53 +++++ ...ty_rules_not_called_on_a_native_route.json | 2 +- ...ntyped_inputs_cte_facts_and_contracts.json | 16 +- ...and_duckdb_adapter_rules_fast_lineage.json | 6 +- ...and_duckdb_adapter_rules_rich_lineage.json | 6 +- ...tions_untyped_inputs_contracts_pivots.json | 16 +- ...erations_quoting_and_opted_out_models.json | 208 +++++++++--------- 17 files changed, 443 insertions(+), 176 deletions(-) create mode 100644 benchmarks/duckshop/project/models/intermediate/edge_cases/int_edge_basket_grouped_sku_filters.sql create mode 100644 benchmarks/duckshop/project/models/intermediate/edge_cases/int_edge_basket_line_neighbours.sql create mode 100644 benchmarks/duckshop/project/models/intermediate/edge_cases/int_edge_basket_line_sku_parts.sql create mode 100644 benchmarks/duckshop/project/tests/unit/intermediate/edge_cases/test_int_edge_basket_grouped_sku_filters.sql create mode 100644 benchmarks/duckshop/project/tests/unit/intermediate/edge_cases/test_int_edge_basket_line_neighbours.sql create mode 100644 benchmarks/duckshop/project/tests/unit/intermediate/edge_cases/test_int_edge_basket_line_sku_parts.sql diff --git a/Cargo.lock b/Cargo.lock index 197cd315c7..072f16122d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4495,8 +4495,8 @@ dependencies = [ [[package]] name = "sqlclean" -version = "0.8.0" -source = "git+https://github.com/sqlstack-io/sqlclean.git?rev=a4a006bd9e5849af6bf477814646ce921299a8a1#a4a006bd9e5849af6bf477814646ce921299a8a1" +version = "0.8.3" +source = "git+https://github.com/sqlstack-io/sqlclean.git?rev=be41ae207344e127db81aa42d6a951682c3f35fa#be41ae207344e127db81aa42d6a951682c3f35fa" dependencies = [ "rayon", "rustc-hash", @@ -4513,8 +4513,8 @@ dependencies = [ [[package]] name = "sqlquack-derive" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "proc-macro2", "quote", @@ -4523,8 +4523,8 @@ dependencies = [ [[package]] name = "sqlquack-diagnostics" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "serde", "serde_json", @@ -4533,8 +4533,8 @@ dependencies = [ [[package]] name = "sqlquack-fingerprint" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "sha2 0.10.9", "sqlquack-parse", @@ -4543,8 +4543,8 @@ dependencies = [ [[package]] name = "sqlquack-format" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "serde_json", "sqlquack-parse", @@ -4553,8 +4553,8 @@ dependencies = [ [[package]] name = "sqlquack-lint" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "rayon", "rustc-hash", @@ -4566,8 +4566,8 @@ dependencies = [ [[package]] name = "sqlquack-parse" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "sqlquack-syntax", "sqlquack-syntax-bigquery", @@ -4579,8 +4579,8 @@ dependencies = [ [[package]] name = "sqlquack-semantics" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "regex", "rustc-hash", @@ -4595,8 +4595,8 @@ dependencies = [ [[package]] name = "sqlquack-syntax" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "serde", "serde_json", @@ -4608,8 +4608,8 @@ dependencies = [ [[package]] name = "sqlquack-syntax-bigquery" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "sqlquack-syntax", "stacker", @@ -4617,8 +4617,8 @@ dependencies = [ [[package]] name = "sqlquack-syntax-clickhouse" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "sqlquack-syntax", "stacker", @@ -4626,8 +4626,8 @@ dependencies = [ [[package]] name = "sqlquack-syntax-databricks" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "sqlquack-syntax", "stacker", @@ -4635,8 +4635,8 @@ dependencies = [ [[package]] name = "sqlquack-syntax-duckdb" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "sqlquack-syntax", "stacker", @@ -4644,8 +4644,8 @@ dependencies = [ [[package]] name = "sqlquack-syntax-postgres" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "sqlquack-syntax", "stacker", @@ -4653,8 +4653,8 @@ dependencies = [ [[package]] name = "sqlquack-syntax-snowflake" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "serde", "serde_json", @@ -4666,8 +4666,8 @@ dependencies = [ [[package]] name = "sqlquack-syntax-sqlite" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "sqlquack-syntax", "stacker", @@ -4675,8 +4675,8 @@ dependencies = [ [[package]] name = "sqlquack-syntax-sqlserver" -version = "0.2.0" -source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=56c7c15ecafe61ea6650159469234db670dea8da#56c7c15ecafe61ea6650159469234db670dea8da" +version = "0.5.1" +source = "git+https://github.com/sqlstack-io/sqlquack.git?rev=e1a583eb6d4180ff4121ef82b3f08b2982edca66#e1a583eb6d4180ff4121ef82b3f08b2982edca66" dependencies = [ "sqlquack-syntax", "stacker", diff --git a/Cargo.toml b/Cargo.toml index 5b5a5a65f1..5e951f06d6 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -174,22 +174,22 @@ sqlbuild-scopes = { path = "crates/sqlbuild-scopes" } sqlbuild-sqltext = { path = "crates/sqlbuild-sqltext" } sqlbuild-state = { path = "crates/sqlbuild-state" } # SQL lint Rules, quality Rules and the formatter. -sqlclean = { git = "https://github.com/sqlstack-io/sqlclean.git", rev = "a4a006bd9e5849af6bf477814646ce921299a8a1" } +sqlclean = { git = "https://github.com/sqlstack-io/sqlclean.git", rev = "be41ae207344e127db81aa42d6a951682c3f35fa" } # SQL change fingerprints over SQLQuack's tokenizers. -sqlquack-fingerprint = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da", features = ["bigquery", "databricks", "duckdb", "postgres", "snowflake", "sqlite", "sqlserver"] } +sqlquack-fingerprint = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "e1a583eb6d4180ff4121ef82b3f08b2982edca66", features = ["bigquery", "databricks", "duckdb", "postgres", "snowflake", "sqlite", "sqlserver"] } # Scopes, name resolution, types and lineage for the native analysis route. -sqlquack-semantics = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da", features = ["bigquery", "clickhouse", "databricks", "duckdb", "postgres", "snowflake", "sqlite", "sqlserver"] } +sqlquack-semantics = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "e1a583eb6d4180ff4121ef82b3f08b2982edca66", features = ["bigquery", "clickhouse", "databricks", "duckdb", "postgres", "snowflake", "sqlite", "sqlserver"] } # SQLQuack's Snowflake-family parser and tokenizer, reached as SQLQuack exposes them. -sqlquack-parse = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" } +sqlquack-parse = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "e1a583eb6d4180ff4121ef82b3f08b2982edca66" } # SQLQuack's syntax tree and lossless tokens. -sqlquack-syntax = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" } -sqlquack-syntax-bigquery = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" } -sqlquack-syntax-clickhouse = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" } -sqlquack-syntax-databricks = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" } -sqlquack-syntax-duckdb = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" } -sqlquack-syntax-postgres = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" } -sqlquack-syntax-sqlite = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" } -sqlquack-syntax-sqlserver = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "56c7c15ecafe61ea6650159469234db670dea8da" } +sqlquack-syntax = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "e1a583eb6d4180ff4121ef82b3f08b2982edca66" } +sqlquack-syntax-bigquery = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "e1a583eb6d4180ff4121ef82b3f08b2982edca66" } +sqlquack-syntax-clickhouse = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "e1a583eb6d4180ff4121ef82b3f08b2982edca66" } +sqlquack-syntax-databricks = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "e1a583eb6d4180ff4121ef82b3f08b2982edca66" } +sqlquack-syntax-duckdb = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "e1a583eb6d4180ff4121ef82b3f08b2982edca66" } +sqlquack-syntax-postgres = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "e1a583eb6d4180ff4121ef82b3f08b2982edca66" } +sqlquack-syntax-sqlite = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "e1a583eb6d4180ff4121ef82b3f08b2982edca66" } +sqlquack-syntax-sqlserver = { git = "https://github.com/sqlstack-io/sqlquack.git", rev = "e1a583eb6d4180ff4121ef82b3f08b2982edca66" } stacker = "0.1" syn = { version = "2", features = ["full", "visit", "extra-traits"] } subtle = "2" diff --git a/benchmarks/duckshop/README.md b/benchmarks/duckshop/README.md index fd9f67e96a..f4386bd6cc 100644 --- a/benchmarks/duckshop/README.md +++ b/benchmarks/duckshop/README.md @@ -124,8 +124,8 @@ project and does not change it: `edge_running_peaks`, that a pre-hook of `int_edge_basket_running_peaks` creates (`models/intermediate/edge_cases/_sqlbuild/_hooks/sql/`) and SQLBuild does not declare. -It has 161 models (13 staging, 134 intermediate, 14 marts), 5 Python functions, a SQL table -function, a hook-created JavaScript function, 186 unit tests and 4 scenarios, in nine groups: +It has 164 models (13 staging, 137 intermediate, 14 marts), 5 Python functions, a SQL table +function, a hook-created JavaScript function, 189 unit tests and 4 scenarios, in nine groups: | Group | Covers | |-------|--------| @@ -134,7 +134,7 @@ function, a hook-created JavaScript function, 186 unit tests and 4 scenarios, in | VARIANT comparisons | `ARRAY_MAX`, `ARRAY_MIN` and `ARRAY_REVERSE` over arrays mixing numbers, strings, booleans, JSON nulls and integers past 2^53; `MAX` across kinds and non-ASCII strings; `=` and `EQUAL_NULL` for `1`, `"1"` and `1.0`, reordered keys, JSON null and DATE or TIMESTAMP values held in a `VARIANT` against their text; `MIN_BY` and `MAX_BY` of `VARIANT` values; `PARTITION BY`, `SELECT DISTINCT` and `ARRAY_AGG(DISTINCT)` over `VARIANT`; JSON nulls in `ARRAY_REMOVE`, `ARRAY_DISTINCT` and `ARRAYS_OVERLAP`; decimals with trailing zeros in `ARRAY_CONTAINS` and `ARRAY_POSITION`; `OBJECT_CONSTRUCT(* EXCLUDE ("note"))` | | Dates and times | `TRY_TO_TIMESTAMP_NTZ` and its siblings over free text; epoch milliseconds as numbers and text; daylight-saving gaps and overlaps; fractional offsets; nanosecond truncation and epoch parts after 2242; pre-1970 text with sub-microsecond digits; date-part normalisation; month ends and leap days; week numbering across a year; sentinel timestamps; `TRY_TO_DATE` with numeric and month-name formats over unpadded fields, two-digit years, ISO `T` and `Z`, trailing letters, a long s, mixed separators and runs of spaces; text read as `TIMESTAMP_TZ` and `TIMESTAMP_LTZ` with `T`, `Z`, `+00:00`, `+0000`, `+09:00` and `-05:30`, back as the UTC instant, date, year and day start, and compared with text, `TIMESTAMP_NTZ` and `DATE`; `FIRST_VALUE` of a zoned value as a `DATE`; `DATEADD` and `TIMEADD` on `TIME(3)` and the type they return; `DATEDIFF` across units; `TIME(9)`, `FF3` and bare `FF` formats truncating; `DATE`, `TO_TIME`, `TRY_TO_TIMESTAMP` and `TO_TIMESTAMP_LTZ` of clock text, and `CURRENT_DATE` and `SYSDATE` read only for facts that hold on any day | | Ordering, numbers and text | NULL ordering under `DESC`; ties in ordered aggregates, `MAX_BY`, `MODE` and `ANY_VALUE`; default window frames; `UNION ALL BY NAME`; `ROUND` half-way values, decimal division, `MOD` and 38-digit amounts; integers past 2^53 against `FLOAT`; regular expressions and backslash escapes; `LIKE ... ESCAPE` and `ILIKE ANY`; `SPLIT_PART` and `SUBSTR` before the start; `NOT IN` with a NULL; names in many scripts; `JOIN ... USING` between `NUMBER(18,0)`, `NUMBER(38,0)` and text keys, with the types of the merged and qualified keys; NULL arithmetic and the types of NULL, decimal and exponent literals, `COUNT`, `ROW_NUMBER`, `%` and `NULLIF`; `MEDIAN` at scales 0 to 15; `DIV0` by literal zeros; `MODE`, `MEDIAN` and `COUNT_IF` over no rows; aggregates inside window functions and `QUALIFY`; `ROLLUP` totals; `TRUNC` of `FLOAT`; infinity words in other scripts; `CASE` without `ELSE` and `DECODE` over text; regular expressions with a `?` after a lazy quantifier, classes opening with `]`, empty matches and `.` against a carriage return; case-insensitive matches outside ASCII; `ILIKE` with a long s; `JAROWINKLER_SIMILARITY` of accented names in both cases; Base64 text with line feeds; `STARTSWITH`, `ENDSWITH`, `SUBSTRING`, `POSITION` with `IN` and with a comma, `CHARINDEX`, `CHR`, `REGEXP_SUBSTR_ALL`, `::STRING` and `CAST ... AS STRING`; `HEX_ENCODE`, `HEX_DECODE_STRING`, `TRY_HEX_DECODE_STRING` and `TRY_BASE64_DECODE_BINARY`; a comment attached to a text literal; `FLOOR` with and without a scale, `BITAND`, `ZEROIFNULL`, `::BIGINT` and `::DOUBLE`; `IS NOT DISTINCT FROM` and `EQUAL_NULL`; a comma join after an explicit join; `HASH_AGG` read in two row orders | -| Lineage and analysis | clauses whose columns decide rows without being output (`WHERE`, `QUALIFY`, `GROUP BY` by position and `ALL`, `ORDER BY` under `LIMIT`, `EXISTS`, a `FLATTEN` input, `ROLLUP` by position, `EXCEPT` under `LIMIT`); `RIGHT JOIN ... USING`, `NATURAL JOIN`, a `USING` key under a later outer join, and unmatched `ASOF JOIN` rows; `CONNECT BY` beside a column named `level`; a recursive CTE without `RECURSIVE` whose columns shift per iteration; `LAST_DAY` with a date part; positional columns and the names Snowflake gives unaliased expressions; `TEXT(5)` and widened `COUNT` contracts | +| Lineage and analysis | clauses whose columns decide rows without being output (`WHERE`, `QUALIFY`, `GROUP BY` by position and `ALL`, `ORDER BY` under `LIMIT`, `EXISTS`, a `FLATTEN` input, `ROLLUP` by position, `EXCEPT` under `LIMIT`); `RIGHT JOIN ... USING`, `NATURAL JOIN`, a `USING` key under a later outer join, and unmatched `ASOF JOIN` rows; `CONNECT BY` beside a column named `level`; a recursive CTE without `RECURSIVE` whose columns shift per iteration; `LAST_DAY` with a date part; positional columns and the names Snowflake gives unaliased expressions; `TEXT(5)` and widened `COUNT` contracts; `LAG` and `LEAD` with one, two and three arguments; a comma-joined `LATERAL` whose nested derived table reads the left item; untyped and typed `FILTER` lambdas over `ARRAY_AGG` in a grouped query | | Python functions | volatile tokens and numbers from a column, a constant and no argument, and `DIV0` of a volatile call beside look-alike names, checked by assertions that hold for any values; a handler answering NULL input without `STRICT`; Python `None` as JSON null, and datetimes, Decimals and integers past 2^53 handed to `VARIANT` and `FLOAT` results | | Scenarios and lifecycle | typed values across model boundaries; `VARIANT` expected output; a star under a lower-case contract and a quoted camelCase export; a snapshot keyed and compared on quoted camelCase columns; a cursor-window incremental model over far-apart fixture loads; a change log merged across two loads, checked against a full rebuild | | Translation refusals | one model per construct that translation tools refuse or guard, most putting a construct refused only under strict checking before one refused by default, so a model shows both: `FLOAT` values through sums, averages, running totals, arrays, objects, `HASH`, `TO_CHAR` and `::NUMBER(38, 10)`; `VARIANT` dates, decimals and XML; `ARRAY_AGG` without `WITHIN GROUP`, sparse arrays and `ARRAY(NUMBER)` casts; `REDUCE`, `FILTER` and `TRANSFORM` lambdas; patterns and `REGEXP_REPLACE` replacements built from columns, and lazy patterns; `TRY_TO_DATE` with a format from a column; zoned literals, `CONVERT_TIMEZONE` from `CURRENT_TIMESTAMP`, `SEQ8`, `GENERATOR` with an expression `ROWCOUNT`; `PIVOT`, `ANY_VALUE`, `IGNORE NULLS` around `IFF`, unaliased columns read by Snowflake's name, `UNION` branches whose column is always NULL; `TO_NUMBER`, `TO_DECIMAL` and `TRY_BASE64_DECODE_BINARY`; an open (uncontracted) source `edge__supplier_notes`, the table function, read for one basket and after `LATERAL` for every basket, and the hook-created function. `rpt_edge_case_model_keys` and `rpt_edge_case_array_model_keys` read every model in the group, so a refusal there also refuses a downstream model | diff --git a/benchmarks/duckshop/project/models/intermediate/edge_cases/int_edge_basket_grouped_sku_filters.sql b/benchmarks/duckshop/project/models/intermediate/edge_cases/int_edge_basket_grouped_sku_filters.sql new file mode 100644 index 0000000000..1b3081c56b --- /dev/null +++ b/benchmarks/duckshop/project/models/intermediate/edge_cases/int_edge_basket_grouped_sku_filters.sql @@ -0,0 +1,35 @@ +MODEL ( + description """ + One row per basket with the number of its red lines and of its SKUs longer than nine characters, + counted by an untyped and a typed FILTER lambda over ARRAY_AGG in the grouped query + """, + tags [edge_case], + columns ( + basket_id (type VARCHAR, nullable false, audits [not_null, unique]), + red_line_count (type NUMBER(38, 0)), + long_sku_count (type NUMBER(38, 0)), + ), +); + +WITH final AS ( + SELECT + l.basket_id, + ARRAY_SIZE( + FILTER( + ARRAY_AGG(l.sku) WITHIN GROUP (ORDER BY l.line_no, l.line_id), + s -> s::VARCHAR LIKE 'DK-RED-%' + ) + )::NUMBER(38, 0) AS red_line_count, + ARRAY_SIZE( + FILTER( + ARRAY_AGG(l.sku) WITHIN GROUP (ORDER BY l.line_no, l.line_id), + s VARCHAR -> LENGTH(s) > 9 + ) + )::NUMBER(38, 0) AS long_sku_count + FROM __ref("stg_edge_basket_lines") AS l + GROUP BY + l.basket_id +) + +SELECT * +FROM final diff --git a/benchmarks/duckshop/project/models/intermediate/edge_cases/int_edge_basket_line_neighbours.sql b/benchmarks/duckshop/project/models/intermediate/edge_cases/int_edge_basket_line_neighbours.sql new file mode 100644 index 0000000000..0f9e26b571 --- /dev/null +++ b/benchmarks/duckshop/project/models/intermediate/edge_cases/int_edge_basket_line_neighbours.sql @@ -0,0 +1,34 @@ +MODEL ( + description """ + One row per basket line with the SKUs of its neighbouring lines in the basket, read by LAG and + LEAD with one, two and three arguments + """, + tags [edge_case], + columns ( + line_id (type VARCHAR, nullable false, audits [not_null, unique]), + previous_sku (type VARCHAR), + second_previous_sku (type VARCHAR), + next_sku (type VARCHAR), + ), +); + +WITH final AS ( + SELECT + l.line_id, + LAG(l.sku) OVER ( + PARTITION BY l.basket_id + ORDER BY l.line_no, l.line_id + )::VARCHAR AS previous_sku, + LAG(l.sku, 2) OVER ( + PARTITION BY l.basket_id + ORDER BY l.line_no, l.line_id + )::VARCHAR AS second_previous_sku, + LEAD(l.sku, 1, 'NONE') OVER ( + PARTITION BY l.basket_id + ORDER BY l.line_no, l.line_id + )::VARCHAR AS next_sku + FROM __ref("stg_edge_basket_lines") AS l +) + +SELECT * +FROM final diff --git a/benchmarks/duckshop/project/models/intermediate/edge_cases/int_edge_basket_line_sku_parts.sql b/benchmarks/duckshop/project/models/intermediate/edge_cases/int_edge_basket_line_sku_parts.sql new file mode 100644 index 0000000000..f5796b450c --- /dev/null +++ b/benchmarks/duckshop/project/models/intermediate/edge_cases/int_edge_basket_line_sku_parts.sql @@ -0,0 +1,32 @@ +MODEL ( + description """ + One row per basket line with the first two parts of its SKU, read through a comma-joined LATERAL + whose nested derived table reads the line + """, + tags [edge_case], + columns ( + line_id (type VARCHAR, nullable false, audits [not_null, unique]), + sku_prefix (type VARCHAR), + sku_colour (type VARCHAR), + ), +); + +WITH final AS ( + SELECT + l.line_id, + x.sku_prefix::VARCHAR AS sku_prefix, + x.sku_colour::VARCHAR AS sku_colour + FROM __ref("stg_edge_basket_lines") AS l, LATERAL ( + SELECT + p.sku_prefix, + p.sku_colour + FROM ( + SELECT + SPLIT_PART(l.sku, '-', 1) AS sku_prefix, + SPLIT_PART(l.sku, '-', 2) AS sku_colour + ) AS p + ) AS x +) + +SELECT * +FROM final diff --git a/benchmarks/duckshop/project/sqlbuild_project.toml b/benchmarks/duckshop/project/sqlbuild_project.toml index 43a99dbcc3..fca5a4ea59 100644 --- a/benchmarks/duckshop/project/sqlbuild_project.toml +++ b/benchmarks/duckshop/project/sqlbuild_project.toml @@ -329,6 +329,14 @@ reason = """ The hook creates a JavaScript function, whose body Snowflake takes as one dollar-quoted string. """ +[[rules.rule_ignores]] +rules = ["SQLCLEAN039"] +paths = ["models/intermediate/edge_cases/int_edge_basket_line_sku_parts.sql"] +reason = """ +The edge case reads the line through a derived table nested in a comma-joined LATERAL on purpose: +that shape is the case under test. +""" + [[rules.rule_ignores]] rules = ["SQLCLEAN040"] paths = ["models/intermediate/edge_cases/int_edge_amount_bit_reads.sql"] diff --git a/benchmarks/duckshop/project/tests/unit/intermediate/edge_cases/test_int_edge_basket_grouped_sku_filters.sql b/benchmarks/duckshop/project/tests/unit/intermediate/edge_cases/test_int_edge_basket_grouped_sku_filters.sql new file mode 100644 index 0000000000..f98f4fc024 --- /dev/null +++ b/benchmarks/duckshop/project/tests/unit/intermediate/edge_cases/test_int_edge_basket_grouped_sku_filters.sql @@ -0,0 +1,27 @@ +TEST (name "int_edge_basket_grouped_sku_filters__counts_skus_with_lambdas_in_a_grouped_query"); + +WITH __ref__stg_edge_basket_lines AS ( + SELECT + v.line_id::VARCHAR AS line_id, + v.basket_id::VARCHAR AS basket_id, + v.line_no::NUMBER(38, 0) AS line_no, + v.sku::VARCHAR AS sku, + v.tag::VARCHAR AS tag + FROM VALUES + ('BL-01', 'B-1', 1, 'DK-RED-01', 'red'), + ('BL-02', 'B-1', 2, 'DK-BLUE-02', 'blue'), + ('BL-03', 'B-1', 3, 'DK-RED-03', 'red'), + ('BL-04', 'B-2', 1, 'TL-GREEN-01', NULL) AS v(line_id, basket_id, line_no, sku, tag) +), + +__expected__int_edge_basket_grouped_sku_filters AS ( + SELECT + 'B-1' AS basket_id, + 2 AS red_line_count, + 1 AS long_sku_count + UNION ALL + SELECT + 'B-2' AS basket_id, + 0 AS red_line_count, + 1 AS long_sku_count +) diff --git a/benchmarks/duckshop/project/tests/unit/intermediate/edge_cases/test_int_edge_basket_line_neighbours.sql b/benchmarks/duckshop/project/tests/unit/intermediate/edge_cases/test_int_edge_basket_line_neighbours.sql new file mode 100644 index 0000000000..b84d15a6b0 --- /dev/null +++ b/benchmarks/duckshop/project/tests/unit/intermediate/edge_cases/test_int_edge_basket_line_neighbours.sql @@ -0,0 +1,41 @@ +TEST (name "int_edge_basket_line_neighbours__reads_neighbouring_skus_with_one_to_three_arguments"); + +WITH __ref__stg_edge_basket_lines AS ( + SELECT + v.line_id::VARCHAR AS line_id, + v.basket_id::VARCHAR AS basket_id, + v.line_no::NUMBER(38, 0) AS line_no, + v.sku::VARCHAR AS sku, + v.tag::VARCHAR AS tag + FROM VALUES + ('BL-01', 'B-1', 1, 'DK-RED-01', 'red'), + ('BL-02', 'B-1', 2, 'DK-BLUE-02', 'blue'), + ('BL-03', 'B-1', 3, 'DK-RED-03', 'red'), + ('BL-04', 'B-2', 1, 'TL-GREEN-01', NULL) AS v(line_id, basket_id, line_no, sku, tag) +), + +__expected__int_edge_basket_line_neighbours AS ( + SELECT + 'BL-01' AS line_id, + CAST(NULL AS VARCHAR) AS previous_sku, + CAST(NULL AS VARCHAR) AS second_previous_sku, + 'DK-BLUE-02' AS next_sku + UNION ALL + SELECT + 'BL-02' AS line_id, + 'DK-RED-01' AS previous_sku, + CAST(NULL AS VARCHAR) AS second_previous_sku, + 'DK-RED-03' AS next_sku + UNION ALL + SELECT + 'BL-03' AS line_id, + 'DK-BLUE-02' AS previous_sku, + 'DK-RED-01' AS second_previous_sku, + 'NONE' AS next_sku + UNION ALL + SELECT + 'BL-04' AS line_id, + CAST(NULL AS VARCHAR) AS previous_sku, + CAST(NULL AS VARCHAR) AS second_previous_sku, + 'NONE' AS next_sku +) diff --git a/benchmarks/duckshop/project/tests/unit/intermediate/edge_cases/test_int_edge_basket_line_sku_parts.sql b/benchmarks/duckshop/project/tests/unit/intermediate/edge_cases/test_int_edge_basket_line_sku_parts.sql new file mode 100644 index 0000000000..a8da6b5cc7 --- /dev/null +++ b/benchmarks/duckshop/project/tests/unit/intermediate/edge_cases/test_int_edge_basket_line_sku_parts.sql @@ -0,0 +1,37 @@ +TEST (name "int_edge_basket_line_sku_parts__splits_skus_through_a_comma_joined_lateral"); + +WITH __ref__stg_edge_basket_lines AS ( + SELECT + v.line_id::VARCHAR AS line_id, + v.basket_id::VARCHAR AS basket_id, + v.line_no::NUMBER(38, 0) AS line_no, + v.sku::VARCHAR AS sku, + v.tag::VARCHAR AS tag + FROM VALUES + ('BL-01', 'B-1', 1, 'DK-RED-01', 'red'), + ('BL-02', 'B-1', 2, 'DK-BLUE-02', 'blue'), + ('BL-03', 'B-1', 3, 'DK-RED-03', 'red'), + ('BL-04', 'B-2', 1, 'TL-GREEN-01', NULL) AS v(line_id, basket_id, line_no, sku, tag) +), + +__expected__int_edge_basket_line_sku_parts AS ( + SELECT + 'BL-01' AS line_id, + 'DK' AS sku_prefix, + 'RED' AS sku_colour + UNION ALL + SELECT + 'BL-02' AS line_id, + 'DK' AS sku_prefix, + 'BLUE' AS sku_colour + UNION ALL + SELECT + 'BL-03' AS line_id, + 'DK' AS sku_prefix, + 'RED' AS sku_colour + UNION ALL + SELECT + 'BL-04' AS line_id, + 'TL' AS sku_prefix, + 'GREEN' AS sku_colour +) diff --git a/tests/e2e/src/sqlbuild/cli/commands/main/compile/test_dialect_syntax.py b/tests/e2e/src/sqlbuild/cli/commands/main/compile/test_dialect_syntax.py index e654d6c20a..7941cea540 100644 --- a/tests/e2e/src/sqlbuild/cli/commands/main/compile/test_dialect_syntax.py +++ b/tests/e2e/src/sqlbuild/cli/commands/main/compile/test_dialect_syntax.py @@ -69,6 +69,59 @@ expected_codes=(), expected_column_counts={"series": 1, "renamed_orders": 2}, ), + DialectSyntaxCompileE2ETestCase( + description="DuckDB windows, comma-joined LATERAL and grouped lambdas bind", + adapter="duckdb", + models={ + "orders": dialect_syntax_model( + "Orders.", "SELECT 1 AS order_id, 'g' AS grp, 10 AS amount, [1, 2] AS items" + ), + "neighbours": dialect_syntax_model( + "Neighbours.", + "SELECT o.order_id, LAG(o.amount) OVER (ORDER BY o.order_id) AS prev_1, " + "LAG(o.amount, 2) OVER (ORDER BY o.order_id) AS prev_2, " + "LEAD(o.amount, 1, 0) OVER (ORDER BY o.order_id) AS next_1 " + 'FROM __ref("orders") AS o', + ), + "items": dialect_syntax_model( + "Items.", + 'SELECT o.order_id, u.item FROM __ref("orders") AS o, ' + "LATERAL (SELECT x.item FROM (SELECT UNNEST(o.items) AS item) AS x) AS u", + ), + "groups": dialect_syntax_model( + "Groups.", + "SELECT o.grp, list_filter(list(o.amount), lambda e: e > 1) AS big_amounts " + 'FROM __ref("orders") AS o GROUP BY o.grp', + ), + }, + expected_exit_code=0, + expected_codes=(), + expected_column_counts={"neighbours": 4, "items": 2, "groups": 2}, + ignored_rules=("SQLCLEAN039",), + ), + DialectSyntaxCompileE2ETestCase( + description="DuckDB JSON and AT TIME ZONE outputs prove their contract types", + adapter="duckdb", + models={ + "orders": dialect_syntax_model( + "Orders.", + "SELECT 1 AS order_id, 10 AS amount, " + "TIMESTAMPTZ '2024-01-01 00:00:00+00' AS placed_at", + ), + "documents": dialect_syntax_model( + "Documents.", + "SELECT o.order_id, CAST('{\"a\": 1}' AS JSON) AS doc, " + "to_json(o.amount) AS amount_json, " + "o.placed_at AT TIME ZONE 'UTC' AS placed_at_utc " + 'FROM __ref("orders") AS o', + ", contract enforced, columns (order_id (type INTEGER), doc (type JSON), " + "amount_json (type JSON), placed_at_utc (type TIMESTAMP))", + ), + }, + expected_exit_code=0, + expected_codes=(), + expected_column_counts={"documents": 4}, + ), DialectSyntaxCompileE2ETestCase( description="Snowflake typed lambdas and subscripts before a colon path parse", adapter="snowflake", diff --git a/tests/goldens/python_oracle/analysis_generated_a_project_local_adapter_s_own_nullability_rules_not_called_on_a_native_route.json b/tests/goldens/python_oracle/analysis_generated_a_project_local_adapter_s_own_nullability_rules_not_called_on_a_native_route.json index 98d73bc235..a468148ec2 100644 --- a/tests/goldens/python_oracle/analysis_generated_a_project_local_adapter_s_own_nullability_rules_not_called_on_a_native_route.json +++ b/tests/goldens/python_oracle/analysis_generated_a_project_local_adapter_s_own_nullability_rules_not_called_on_a_native_route.json @@ -226,7 +226,7 @@ "orders_model_15": "71c3c40b94129b126dcdbb81", "orders_model_18": "a0b539522577fbc223ae67b2", "orders_model_21": "67ae6af409703b6ec6a4ba22", -"orders_model_3": "fd8ea928d0c948f37488b850", +"orders_model_3": "af08b08479825ffc1a695191", "orders_model_6": "e64a458d11ef75ef9e32b2fb", "orders_model_9": "699a9768ed5f28982916730d", "orders_model_1": "2e657a2a732202f603d838cc", diff --git a/tests/goldens/python_oracle/analysis_generated_rich_lineage_over_untyped_inputs_cte_facts_and_contracts.json b/tests/goldens/python_oracle/analysis_generated_rich_lineage_over_untyped_inputs_cte_facts_and_contracts.json index 23ee3a9fb8..d0bf7268af 100644 --- a/tests/goldens/python_oracle/analysis_generated_rich_lineage_over_untyped_inputs_cte_facts_and_contracts.json +++ b/tests/goldens/python_oracle/analysis_generated_rich_lineage_over_untyped_inputs_cte_facts_and_contracts.json @@ -643,7 +643,7 @@ "orders_model_15": "2c80312c2723165af581e438", "orders_model_18": "797be3a5985da7e767ae0fba", "orders_model_21": "632ce5a31c3bae13f0f4a7e9", -"orders_model_3": "c5d1f198c23a94d1c8c91b87", +"orders_model_3": "e2a3ea0e1b50a7b0bba20457", "orders_model_6": "417212138029e32a8ed8cca2", "orders_model_9": "caa8198e7e417423bacef68e", "orders_model_1": "df0a9be7e6ae18826ec1b6ca", @@ -816,7 +816,7 @@ "orders_model_15": "ab06233530440b9573d7b7a7", "orders_model_18": "743b366ab8029ece6b295d21", "orders_model_21": "632ce5a31c3bae13f0f4a7e9", -"orders_model_3": "db5c0d8a1f145079d6717c64", +"orders_model_3": "5acfcd0f83a7b9006ab37930", "orders_model_6": "063ba0e5f5eda2a2ca084058", "orders_model_9": "caa8198e7e417423bacef68e", "orders_model_1": "eb83130c26ef61999525fc03", @@ -959,7 +959,7 @@ "orders_model_15": "2c80312c2723165af581e438", "orders_model_18": "797be3a5985da7e767ae0fba", "orders_model_21": "632ce5a31c3bae13f0f4a7e9", -"orders_model_3": "c5d1f198c23a94d1c8c91b87", +"orders_model_3": "e2a3ea0e1b50a7b0bba20457", "orders_model_6": "417212138029e32a8ed8cca2", "orders_model_9": "caa8198e7e417423bacef68e", "orders_model_1": "ab55dc1319e1a5fd3ee13c89", @@ -1132,7 +1132,7 @@ "orders_model_15": "ad2c189e83819cfcbba92fbb", "orders_model_18": "0278275b31e536eac15c32a5", "orders_model_21": "632ce5a31c3bae13f0f4a7e9", -"orders_model_3": "77b4e7b179c00d6d1248aaf3", +"orders_model_3": "d54bb03dedd0c3531d5fb460", "orders_model_6": "415dc69d5a9fdb4d980708ff", "orders_model_9": "caa8198e7e417423bacef68e", "orders_model_1": "78e53e8a66e7373805a9a33a", @@ -2557,7 +2557,7 @@ "orders_model_20": "425a516cf49ced70f18550bf", "orders_model_23": "ff895a8a83c9e758fbc37bf5", "orders_model_5": "8c62f0737cfba7e68b86ae43", -"orders_model_8": "e0b9f79671eccfa779e360be", +"orders_model_8": "190089c4557fc06e6bcff020", "payment_totals": "09523c9ed08b78a006a96743", "payments_by_customer": "9e1265b9f4134636cb508259", "pivot_0": "a0004f1f25e073d9c1be3ba5", @@ -2730,7 +2730,7 @@ "orders_model_20": "e0e33081450a40f7036daae7", "orders_model_23": "9b5a54a902e9acadf76a4194", "orders_model_5": "8c62f0737cfba7e68b86ae43", -"orders_model_8": "962e90a730f4c515cbb695f3", +"orders_model_8": "2cd2e45cfba5482d7e6d459c", "payment_totals": "4a3cefd8501ef6c01416a484", "payments_by_customer": "9e1265b9f4134636cb508259" } @@ -2873,7 +2873,7 @@ "orders_model_20": "425a516cf49ced70f18550bf", "orders_model_23": "9b5a54a902e9acadf76a4194", "orders_model_5": "491a1c5bb2ab02a6131a515b", -"orders_model_8": "fa828e9bb9ef4b8f818b42a1", +"orders_model_8": "ec7702de2692bd5249f95ec8", "payment_totals": "06adf350696650d18756caf9", "payments_by_customer": "9e1265b9f4134636cb508259", "pivot_0": "500c86fe5088c716a39b7169", @@ -3046,7 +3046,7 @@ "orders_model_20": "d5c0160e85eacacb67ca9e02", "orders_model_23": "1e6e09a3f7f31150b64ba14d", "orders_model_5": "60dd766ceda631cfc8d22967", -"orders_model_8": "962e90a730f4c515cbb695f3", +"orders_model_8": "2cd2e45cfba5482d7e6d459c", "payment_totals": "4305f3153b974cee803f57b1", "payments_by_customer": "1d6a0338bf72d10443d4e6e3" } diff --git a/tests/goldens/python_oracle/analysis_generated_snowflake_and_duckdb_adapter_rules_fast_lineage.json b/tests/goldens/python_oracle/analysis_generated_snowflake_and_duckdb_adapter_rules_fast_lineage.json index 1163c2c759..48c84616c0 100644 --- a/tests/goldens/python_oracle/analysis_generated_snowflake_and_duckdb_adapter_rules_fast_lineage.json +++ b/tests/goldens/python_oracle/analysis_generated_snowflake_and_duckdb_adapter_rules_fast_lineage.json @@ -434,7 +434,7 @@ "orders_model_15": "d99e5356957f891964a727f1", "orders_model_18": "e2ab7b8536a568c9d3d3f586", "orders_model_21": "4e0bd396f144b882c4f76045", -"orders_model_3": "855cfac8af99cff64e3b39cc", +"orders_model_3": "d500c304fd57d7ba10e46a3d", "orders_model_6": "80c85e009910001ee4bf4573", "orders_model_9": "2e576dbc2ec9950f748ab040", "orders_model_1": "719ad3e054aa9391ed9206ca", @@ -639,10 +639,10 @@ "umlaut_cte": "f154c3ae3931efa5d4f93bb2", "orders_model_0": "b02026cdc6a38ff5f06fe2a9", "orders_model_12": "c98195ac460ce6ca7b4010e3", -"orders_model_15": "c8cd55adb66760570ede2dc9", +"orders_model_15": "a572284b7d2f06e003071043", "orders_model_18": "92b36e152f6c5344d8752970", "orders_model_21": "5f132332ae3b9369f92873b5", -"orders_model_3": "d8e80bbaf4082a4b84af147a", +"orders_model_3": "f5846cc0b8771fd7304b8e70", "orders_model_6": "231a71307da97c186fceaf29", "orders_model_9": "20f4b7d9787b1c99bacef80a", "orders_model_1": "578f308f47a8f1f8c74c85a2", diff --git a/tests/goldens/python_oracle/analysis_generated_snowflake_and_duckdb_adapter_rules_rich_lineage.json b/tests/goldens/python_oracle/analysis_generated_snowflake_and_duckdb_adapter_rules_rich_lineage.json index 1163c2c759..48c84616c0 100644 --- a/tests/goldens/python_oracle/analysis_generated_snowflake_and_duckdb_adapter_rules_rich_lineage.json +++ b/tests/goldens/python_oracle/analysis_generated_snowflake_and_duckdb_adapter_rules_rich_lineage.json @@ -434,7 +434,7 @@ "orders_model_15": "d99e5356957f891964a727f1", "orders_model_18": "e2ab7b8536a568c9d3d3f586", "orders_model_21": "4e0bd396f144b882c4f76045", -"orders_model_3": "855cfac8af99cff64e3b39cc", +"orders_model_3": "d500c304fd57d7ba10e46a3d", "orders_model_6": "80c85e009910001ee4bf4573", "orders_model_9": "2e576dbc2ec9950f748ab040", "orders_model_1": "719ad3e054aa9391ed9206ca", @@ -639,10 +639,10 @@ "umlaut_cte": "f154c3ae3931efa5d4f93bb2", "orders_model_0": "b02026cdc6a38ff5f06fe2a9", "orders_model_12": "c98195ac460ce6ca7b4010e3", -"orders_model_15": "c8cd55adb66760570ede2dc9", +"orders_model_15": "a572284b7d2f06e003071043", "orders_model_18": "92b36e152f6c5344d8752970", "orders_model_21": "5f132332ae3b9369f92873b5", -"orders_model_3": "d8e80bbaf4082a4b84af147a", +"orders_model_3": "f5846cc0b8771fd7304b8e70", "orders_model_6": "231a71307da97c186fceaf29", "orders_model_9": "20f4b7d9787b1c99bacef80a", "orders_model_1": "578f308f47a8f1f8c74c85a2", diff --git a/tests/goldens/python_oracle/analysis_generated_stars_ctes_cte_facts_set_operations_untyped_inputs_contracts_pivots.json b/tests/goldens/python_oracle/analysis_generated_stars_ctes_cte_facts_set_operations_untyped_inputs_contracts_pivots.json index 23ee3a9fb8..d0bf7268af 100644 --- a/tests/goldens/python_oracle/analysis_generated_stars_ctes_cte_facts_set_operations_untyped_inputs_contracts_pivots.json +++ b/tests/goldens/python_oracle/analysis_generated_stars_ctes_cte_facts_set_operations_untyped_inputs_contracts_pivots.json @@ -643,7 +643,7 @@ "orders_model_15": "2c80312c2723165af581e438", "orders_model_18": "797be3a5985da7e767ae0fba", "orders_model_21": "632ce5a31c3bae13f0f4a7e9", -"orders_model_3": "c5d1f198c23a94d1c8c91b87", +"orders_model_3": "e2a3ea0e1b50a7b0bba20457", "orders_model_6": "417212138029e32a8ed8cca2", "orders_model_9": "caa8198e7e417423bacef68e", "orders_model_1": "df0a9be7e6ae18826ec1b6ca", @@ -816,7 +816,7 @@ "orders_model_15": "ab06233530440b9573d7b7a7", "orders_model_18": "743b366ab8029ece6b295d21", "orders_model_21": "632ce5a31c3bae13f0f4a7e9", -"orders_model_3": "db5c0d8a1f145079d6717c64", +"orders_model_3": "5acfcd0f83a7b9006ab37930", "orders_model_6": "063ba0e5f5eda2a2ca084058", "orders_model_9": "caa8198e7e417423bacef68e", "orders_model_1": "eb83130c26ef61999525fc03", @@ -959,7 +959,7 @@ "orders_model_15": "2c80312c2723165af581e438", "orders_model_18": "797be3a5985da7e767ae0fba", "orders_model_21": "632ce5a31c3bae13f0f4a7e9", -"orders_model_3": "c5d1f198c23a94d1c8c91b87", +"orders_model_3": "e2a3ea0e1b50a7b0bba20457", "orders_model_6": "417212138029e32a8ed8cca2", "orders_model_9": "caa8198e7e417423bacef68e", "orders_model_1": "ab55dc1319e1a5fd3ee13c89", @@ -1132,7 +1132,7 @@ "orders_model_15": "ad2c189e83819cfcbba92fbb", "orders_model_18": "0278275b31e536eac15c32a5", "orders_model_21": "632ce5a31c3bae13f0f4a7e9", -"orders_model_3": "77b4e7b179c00d6d1248aaf3", +"orders_model_3": "d54bb03dedd0c3531d5fb460", "orders_model_6": "415dc69d5a9fdb4d980708ff", "orders_model_9": "caa8198e7e417423bacef68e", "orders_model_1": "78e53e8a66e7373805a9a33a", @@ -2557,7 +2557,7 @@ "orders_model_20": "425a516cf49ced70f18550bf", "orders_model_23": "ff895a8a83c9e758fbc37bf5", "orders_model_5": "8c62f0737cfba7e68b86ae43", -"orders_model_8": "e0b9f79671eccfa779e360be", +"orders_model_8": "190089c4557fc06e6bcff020", "payment_totals": "09523c9ed08b78a006a96743", "payments_by_customer": "9e1265b9f4134636cb508259", "pivot_0": "a0004f1f25e073d9c1be3ba5", @@ -2730,7 +2730,7 @@ "orders_model_20": "e0e33081450a40f7036daae7", "orders_model_23": "9b5a54a902e9acadf76a4194", "orders_model_5": "8c62f0737cfba7e68b86ae43", -"orders_model_8": "962e90a730f4c515cbb695f3", +"orders_model_8": "2cd2e45cfba5482d7e6d459c", "payment_totals": "4a3cefd8501ef6c01416a484", "payments_by_customer": "9e1265b9f4134636cb508259" } @@ -2873,7 +2873,7 @@ "orders_model_20": "425a516cf49ced70f18550bf", "orders_model_23": "9b5a54a902e9acadf76a4194", "orders_model_5": "491a1c5bb2ab02a6131a515b", -"orders_model_8": "fa828e9bb9ef4b8f818b42a1", +"orders_model_8": "ec7702de2692bd5249f95ec8", "payment_totals": "06adf350696650d18756caf9", "payments_by_customer": "9e1265b9f4134636cb508259", "pivot_0": "500c86fe5088c716a39b7169", @@ -3046,7 +3046,7 @@ "orders_model_20": "d5c0160e85eacacb67ca9e02", "orders_model_23": "1e6e09a3f7f31150b64ba14d", "orders_model_5": "60dd766ceda631cfc8d22967", -"orders_model_8": "962e90a730f4c515cbb695f3", +"orders_model_8": "2cd2e45cfba5482d7e6d459c", "payment_totals": "4305f3153b974cee803f57b1", "payments_by_customer": "1d6a0338bf72d10443d4e6e3" } diff --git a/tests/goldens/python_oracle/fast_lineage_generated_stars_nested_ctes_set_operations_quoting_and_opted_out_models.json b/tests/goldens/python_oracle/fast_lineage_generated_stars_nested_ctes_set_operations_quoting_and_opted_out_models.json index 5918ecc939..648d3f0337 100644 --- a/tests/goldens/python_oracle/fast_lineage_generated_stars_nested_ctes_set_operations_quoting_and_opted_out_models.json +++ b/tests/goldens/python_oracle/fast_lineage_generated_stars_nested_ctes_set_operations_quoting_and_opted_out_models.json @@ -6,7 +6,7 @@ "1:orders_model_0.has_star": "b5bea41b6c623f7c09f1bf24", "2:orders_model_0.edge_count": "4e07408562bedb8b60ce05c1", "3:orders_model_0.targeting": "aee68019acd37d10a817b41d", -"4:orders_model_0.sourced": "5a2ba1c1876f477d1e26f62e", +"4:orders_model_0.sourced": "1990f5d01e632714338d0160", "5:orders_model_12.has_model": "fcbcf165908dd18a9e49f7ff", "6:orders_model_12.has_star": "fcbcf165908dd18a9e49f7ff", "7:orders_model_12.edge_count": "5feceb66ffc86f38d952786c", @@ -20,7 +20,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "893c539cb301d6133966b471", +"18:orders_model_3.targeting": "857c83e64739100814d8f497", "19:orders_model_3.sourced": "6786f18f6ff42aa577c99d86", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -36,7 +36,7 @@ "31:orders_model_1.has_star": "b5bea41b6c623f7c09f1bf24", "32:orders_model_1.edge_count": "4b227777d4dd1fc61c6f884f", "33:orders_model_1.targeting": "8705e086b45cfb0e3782e1a4", -"34:orders_model_1.sourced": "c118855c77d669452492b796", +"34:orders_model_1.sourced": "f448ce5ed7ab9a8f36d6eb9b", "35:orders_model_10.has_model": "b5bea41b6c623f7c09f1bf24", "36:orders_model_10.has_star": "b5bea41b6c623f7c09f1bf24", "37:orders_model_10.edge_count": "4e07408562bedb8b60ce05c1", @@ -82,8 +82,8 @@ "77:orders_model_8.edge_count": "5feceb66ffc86f38d952786c", "78:orders_model_8.targeting": "6786f18f6ff42aa577c99d86", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "4f22311b53a3bfec1da86741", -"81:edges": "4c4dc4348b462a3590cc233d" +"80:models": "5d59bfbbafb0d9435796ccd9", +"81:edges": "1a3f8ab67aef2ce367ab200f" } ], [ @@ -180,7 +180,7 @@ "1:orders_model_0.has_star": "b5bea41b6c623f7c09f1bf24", "2:orders_model_0.edge_count": "4e07408562bedb8b60ce05c1", "3:orders_model_0.targeting": "aee68019acd37d10a817b41d", -"4:orders_model_0.sourced": "5a2ba1c1876f477d1e26f62e", +"4:orders_model_0.sourced": "1990f5d01e632714338d0160", "5:orders_model_12.has_model": "b5bea41b6c623f7c09f1bf24", "6:orders_model_12.has_star": "fcbcf165908dd18a9e49f7ff", "7:orders_model_12.edge_count": "d4735e3a265e16eee03f5971", @@ -194,7 +194,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "893c539cb301d6133966b471", +"18:orders_model_3.targeting": "857c83e64739100814d8f497", "19:orders_model_3.sourced": "6786f18f6ff42aa577c99d86", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -210,7 +210,7 @@ "31:orders_model_1.has_star": "b5bea41b6c623f7c09f1bf24", "32:orders_model_1.edge_count": "4b227777d4dd1fc61c6f884f", "33:orders_model_1.targeting": "8705e086b45cfb0e3782e1a4", -"34:orders_model_1.sourced": "3f12ee2602150ccd7674411c", +"34:orders_model_1.sourced": "aca713bc406740032b932102", "35:orders_model_10.has_model": "b5bea41b6c623f7c09f1bf24", "36:orders_model_10.has_star": "b5bea41b6c623f7c09f1bf24", "37:orders_model_10.edge_count": "4e07408562bedb8b60ce05c1", @@ -256,8 +256,8 @@ "77:orders_model_8.edge_count": "4e07408562bedb8b60ce05c1", "78:orders_model_8.targeting": "d3efe717b762c729423af4be", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "71c5788c00559317388c777e", -"81:edges": "592b3500f02cc633e51b14fd" +"80:models": "fb4a722942f287398acc4227", +"81:edges": "1ba0647648be6de4dbba029e" } ], [ @@ -354,7 +354,7 @@ "1:orders_model_0.has_star": "b5bea41b6c623f7c09f1bf24", "2:orders_model_0.edge_count": "4e07408562bedb8b60ce05c1", "3:orders_model_0.targeting": "aee68019acd37d10a817b41d", -"4:orders_model_0.sourced": "5a2ba1c1876f477d1e26f62e", +"4:orders_model_0.sourced": "1990f5d01e632714338d0160", "5:orders_model_12.has_model": "b5bea41b6c623f7c09f1bf24", "6:orders_model_12.has_star": "fcbcf165908dd18a9e49f7ff", "7:orders_model_12.edge_count": "d4735e3a265e16eee03f5971", @@ -368,7 +368,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "893c539cb301d6133966b471", +"18:orders_model_3.targeting": "857c83e64739100814d8f497", "19:orders_model_3.sourced": "6786f18f6ff42aa577c99d86", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -384,7 +384,7 @@ "31:orders_model_1.has_star": "b5bea41b6c623f7c09f1bf24", "32:orders_model_1.edge_count": "4b227777d4dd1fc61c6f884f", "33:orders_model_1.targeting": "8705e086b45cfb0e3782e1a4", -"34:orders_model_1.sourced": "3f12ee2602150ccd7674411c", +"34:orders_model_1.sourced": "aca713bc406740032b932102", "35:orders_model_10.has_model": "b5bea41b6c623f7c09f1bf24", "36:orders_model_10.has_star": "b5bea41b6c623f7c09f1bf24", "37:orders_model_10.edge_count": "4e07408562bedb8b60ce05c1", @@ -430,8 +430,8 @@ "77:orders_model_8.edge_count": "4e07408562bedb8b60ce05c1", "78:orders_model_8.targeting": "d3efe717b762c729423af4be", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "9bcd9406e17b235c20c6f29a", -"81:edges": "62fd09c1aecd671288b0f619" +"80:models": "a08a95f4637c3ebe85b1f64f", +"81:edges": "5653b7bea552cc8d1c518055" } ], [ @@ -528,7 +528,7 @@ "1:orders_model_0.has_star": "b5bea41b6c623f7c09f1bf24", "2:orders_model_0.edge_count": "4e07408562bedb8b60ce05c1", "3:orders_model_0.targeting": "aee68019acd37d10a817b41d", -"4:orders_model_0.sourced": "5a2ba1c1876f477d1e26f62e", +"4:orders_model_0.sourced": "1990f5d01e632714338d0160", "5:orders_model_12.has_model": "b5bea41b6c623f7c09f1bf24", "6:orders_model_12.has_star": "fcbcf165908dd18a9e49f7ff", "7:orders_model_12.edge_count": "d4735e3a265e16eee03f5971", @@ -542,7 +542,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "893c539cb301d6133966b471", +"18:orders_model_3.targeting": "857c83e64739100814d8f497", "19:orders_model_3.sourced": "6786f18f6ff42aa577c99d86", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -558,7 +558,7 @@ "31:orders_model_1.has_star": "b5bea41b6c623f7c09f1bf24", "32:orders_model_1.edge_count": "4b227777d4dd1fc61c6f884f", "33:orders_model_1.targeting": "8705e086b45cfb0e3782e1a4", -"34:orders_model_1.sourced": "3f12ee2602150ccd7674411c", +"34:orders_model_1.sourced": "aca713bc406740032b932102", "35:orders_model_10.has_model": "b5bea41b6c623f7c09f1bf24", "36:orders_model_10.has_star": "b5bea41b6c623f7c09f1bf24", "37:orders_model_10.edge_count": "4e07408562bedb8b60ce05c1", @@ -604,8 +604,8 @@ "77:orders_model_8.edge_count": "4e07408562bedb8b60ce05c1", "78:orders_model_8.targeting": "d3efe717b762c729423af4be", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "cf7dbf56d4a9a08f2ec818cb", -"81:edges": "dc9c7ad34877ef1602b3c076" +"80:models": "d7f6346f6fa3c4cbce1009d9", +"81:edges": "ecf1de7c806424ad432b5346" } ], [ @@ -1412,7 +1412,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "de3b49e9b64821c2b887aad7", +"18:orders_model_3.targeting": "844829a9cd0c4a620ba890aa", "19:orders_model_3.sourced": "8805af3e97106cbcae9e604f", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -1474,8 +1474,8 @@ "77:orders_model_8.edge_count": "5feceb66ffc86f38d952786c", "78:orders_model_8.targeting": "6786f18f6ff42aa577c99d86", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "9f026e7dd63d1e7cc57a8f53", -"81:edges": "2711c6d03fcc381dc6e4244f" +"80:models": "f8352c19805ea70824d8d6e6", +"81:edges": "a4ec0383e609fad5b05ebb5f" } ], [ @@ -1499,7 +1499,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "de3b49e9b64821c2b887aad7", +"18:orders_model_3.targeting": "844829a9cd0c4a620ba890aa", "19:orders_model_3.sourced": "6786f18f6ff42aa577c99d86", "20:orders_model_6.has_model": "fcbcf165908dd18a9e49f7ff", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -1561,8 +1561,8 @@ "77:orders_model_8.edge_count": "5feceb66ffc86f38d952786c", "78:orders_model_8.targeting": "6786f18f6ff42aa577c99d86", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "1e771b42efaa66a5ee7cc8f7", -"81:edges": "eb5a92deebe12072697fe072" +"80:models": "5dada08a862311c1513c1392", +"81:edges": "b0e96a23149a98d565041954" } ], [ @@ -1586,7 +1586,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "de3b49e9b64821c2b887aad7", +"18:orders_model_3.targeting": "844829a9cd0c4a620ba890aa", "19:orders_model_3.sourced": "8805af3e97106cbcae9e604f", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -1648,8 +1648,8 @@ "77:orders_model_8.edge_count": "ef2d127de37b942baad06145", "78:orders_model_8.targeting": "81cc7bd55faa6546ba2a3303", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "dd9f4ebb6e7f09cc2cbbbb25", -"81:edges": "6bc498ee1db3c58ea64917ac" +"80:models": "e6bb20bd1daf631c5ed40a90", +"81:edges": "fd00c40072fd248efad108b1" } ], [ @@ -1673,7 +1673,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "de3b49e9b64821c2b887aad7", +"18:orders_model_3.targeting": "844829a9cd0c4a620ba890aa", "19:orders_model_3.sourced": "6786f18f6ff42aa577c99d86", "20:orders_model_6.has_model": "fcbcf165908dd18a9e49f7ff", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -1735,8 +1735,8 @@ "77:orders_model_8.edge_count": "5feceb66ffc86f38d952786c", "78:orders_model_8.targeting": "6786f18f6ff42aa577c99d86", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "1e771b42efaa66a5ee7cc8f7", -"81:edges": "eb5a92deebe12072697fe072" +"80:models": "5dada08a862311c1513c1392", +"81:edges": "b0e96a23149a98d565041954" } ], [ @@ -1760,7 +1760,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "de3b49e9b64821c2b887aad7", +"18:orders_model_3.targeting": "844829a9cd0c4a620ba890aa", "19:orders_model_3.sourced": "8805af3e97106cbcae9e604f", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -1822,8 +1822,8 @@ "77:orders_model_8.edge_count": "ef2d127de37b942baad06145", "78:orders_model_8.targeting": "81cc7bd55faa6546ba2a3303", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "dd9f4ebb6e7f09cc2cbbbb25", -"81:edges": "6bc498ee1db3c58ea64917ac" +"80:models": "e6bb20bd1daf631c5ed40a90", +"81:edges": "fd00c40072fd248efad108b1" } ], [ @@ -1847,7 +1847,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "de3b49e9b64821c2b887aad7", +"18:orders_model_3.targeting": "844829a9cd0c4a620ba890aa", "19:orders_model_3.sourced": "6786f18f6ff42aa577c99d86", "20:orders_model_6.has_model": "fcbcf165908dd18a9e49f7ff", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -1909,8 +1909,8 @@ "77:orders_model_8.edge_count": "5feceb66ffc86f38d952786c", "78:orders_model_8.targeting": "6786f18f6ff42aa577c99d86", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "1e771b42efaa66a5ee7cc8f7", -"81:edges": "eb5a92deebe12072697fe072" +"80:models": "5dada08a862311c1513c1392", +"81:edges": "b0e96a23149a98d565041954" } ], [ @@ -1934,7 +1934,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "de3b49e9b64821c2b887aad7", +"18:orders_model_3.targeting": "844829a9cd0c4a620ba890aa", "19:orders_model_3.sourced": "8805af3e97106cbcae9e604f", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -1996,8 +1996,8 @@ "77:orders_model_8.edge_count": "ef2d127de37b942baad06145", "78:orders_model_8.targeting": "81cc7bd55faa6546ba2a3303", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "dd9f4ebb6e7f09cc2cbbbb25", -"81:edges": "6bc498ee1db3c58ea64917ac" +"80:models": "e6bb20bd1daf631c5ed40a90", +"81:edges": "fd00c40072fd248efad108b1" } ], [ @@ -2021,7 +2021,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "de3b49e9b64821c2b887aad7", +"18:orders_model_3.targeting": "844829a9cd0c4a620ba890aa", "19:orders_model_3.sourced": "6786f18f6ff42aa577c99d86", "20:orders_model_6.has_model": "fcbcf165908dd18a9e49f7ff", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -2083,8 +2083,8 @@ "77:orders_model_8.edge_count": "5feceb66ffc86f38d952786c", "78:orders_model_8.targeting": "6786f18f6ff42aa577c99d86", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "1e771b42efaa66a5ee7cc8f7", -"81:edges": "eb5a92deebe12072697fe072" +"80:models": "5dada08a862311c1513c1392", +"81:edges": "b0e96a23149a98d565041954" } ], [ @@ -2804,7 +2804,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "6b86b273ff34fce19d6b804e", -"18:orders_model_3.targeting": "f4a5e31e638eecc9056cff7a", +"18:orders_model_3.targeting": "dd4c49fc0c4294d06d24d1d5", "19:orders_model_3.sourced": "6786f18f6ff42aa577c99d86", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -2855,7 +2855,7 @@ "66:orders_model_2.has_star": "fcbcf165908dd18a9e49f7ff", "67:orders_model_2.edge_count": "6b86b273ff34fce19d6b804e", "68:orders_model_2.targeting": "3e0cdfcee002eb4e503eeccc", -"69:orders_model_2.sourced": "fe6b3844da0192272511b53f", +"69:orders_model_2.sourced": "681d3520bcb32cfb963f5579", "70:orders_model_5.has_model": "b5bea41b6c623f7c09f1bf24", "71:orders_model_5.has_star": "fcbcf165908dd18a9e49f7ff", "72:orders_model_5.edge_count": "d4735e3a265e16eee03f5971", @@ -2866,8 +2866,8 @@ "77:orders_model_8.edge_count": "5feceb66ffc86f38d952786c", "78:orders_model_8.targeting": "6786f18f6ff42aa577c99d86", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "763fa28cbf468cac5a8f8cd9", -"81:edges": "8c231e037bf45d8e64fe08df" +"80:models": "ed43c91891ba9249d1b189e1", +"81:edges": "f2d0dc635f54b5988a89082f" } ], [ @@ -2978,7 +2978,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "6b86b273ff34fce19d6b804e", -"18:orders_model_3.targeting": "f4a5e31e638eecc9056cff7a", +"18:orders_model_3.targeting": "dd4c49fc0c4294d06d24d1d5", "19:orders_model_3.sourced": "6786f18f6ff42aa577c99d86", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -3029,7 +3029,7 @@ "66:orders_model_2.has_star": "fcbcf165908dd18a9e49f7ff", "67:orders_model_2.edge_count": "6b86b273ff34fce19d6b804e", "68:orders_model_2.targeting": "3e0cdfcee002eb4e503eeccc", -"69:orders_model_2.sourced": "4a5554fd93e075e1708287ca", +"69:orders_model_2.sourced": "2b532965f577802df4eaacb4", "70:orders_model_5.has_model": "b5bea41b6c623f7c09f1bf24", "71:orders_model_5.has_star": "fcbcf165908dd18a9e49f7ff", "72:orders_model_5.edge_count": "d4735e3a265e16eee03f5971", @@ -3040,8 +3040,8 @@ "77:orders_model_8.edge_count": "e7f6c011776e8db7cd330b54", "78:orders_model_8.targeting": "bac638b21a9370f38ca8e782", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "8613beb56787f7fe0c35a415", -"81:edges": "8290e75b7b2cd2a3906c03ec" +"80:models": "8b8dec1f6d4ac78bbfabfc55", +"81:edges": "6f64053f48b2893dec9e46af" } ], [ @@ -3152,7 +3152,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "6b86b273ff34fce19d6b804e", -"18:orders_model_3.targeting": "f4a5e31e638eecc9056cff7a", +"18:orders_model_3.targeting": "dd4c49fc0c4294d06d24d1d5", "19:orders_model_3.sourced": "6786f18f6ff42aa577c99d86", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -3203,7 +3203,7 @@ "66:orders_model_2.has_star": "fcbcf165908dd18a9e49f7ff", "67:orders_model_2.edge_count": "6b86b273ff34fce19d6b804e", "68:orders_model_2.targeting": "3e0cdfcee002eb4e503eeccc", -"69:orders_model_2.sourced": "4a5554fd93e075e1708287ca", +"69:orders_model_2.sourced": "2b532965f577802df4eaacb4", "70:orders_model_5.has_model": "b5bea41b6c623f7c09f1bf24", "71:orders_model_5.has_star": "fcbcf165908dd18a9e49f7ff", "72:orders_model_5.edge_count": "d4735e3a265e16eee03f5971", @@ -3214,8 +3214,8 @@ "77:orders_model_8.edge_count": "e7f6c011776e8db7cd330b54", "78:orders_model_8.targeting": "bac638b21a9370f38ca8e782", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "45ac84fcfd35b63443ad078e", -"81:edges": "7bc423952e060c7934ed96d3" +"80:models": "997ae97b3fb44db33231e950", +"81:edges": "e93108b37b5db4ef3cade554" } ], [ @@ -3326,7 +3326,7 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "6b86b273ff34fce19d6b804e", -"18:orders_model_3.targeting": "f4a5e31e638eecc9056cff7a", +"18:orders_model_3.targeting": "dd4c49fc0c4294d06d24d1d5", "19:orders_model_3.sourced": "6786f18f6ff42aa577c99d86", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", @@ -3377,7 +3377,7 @@ "66:orders_model_2.has_star": "fcbcf165908dd18a9e49f7ff", "67:orders_model_2.edge_count": "6b86b273ff34fce19d6b804e", "68:orders_model_2.targeting": "3e0cdfcee002eb4e503eeccc", -"69:orders_model_2.sourced": "4a5554fd93e075e1708287ca", +"69:orders_model_2.sourced": "2b532965f577802df4eaacb4", "70:orders_model_5.has_model": "b5bea41b6c623f7c09f1bf24", "71:orders_model_5.has_star": "fcbcf165908dd18a9e49f7ff", "72:orders_model_5.edge_count": "d4735e3a265e16eee03f5971", @@ -3388,8 +3388,8 @@ "77:orders_model_8.edge_count": "e7f6c011776e8db7cd330b54", "78:orders_model_8.targeting": "bac638b21a9370f38ca8e782", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "2488a9d5025e37aeb9c1b218", -"81:edges": "0331b932d6829fa30ffadcf0" +"80:models": "8295e4f00d3b535960a6c0a8", +"81:edges": "2e2697d9b1bdb5b7147a4229" } ], [ @@ -4186,7 +4186,7 @@ "5:orders_model_12.has_model": "b5bea41b6c623f7c09f1bf24", "6:orders_model_12.has_star": "fcbcf165908dd18a9e49f7ff", "7:orders_model_12.edge_count": "d4735e3a265e16eee03f5971", -"8:orders_model_12.targeting": "6b6e7d84a554f1c399102dc2", +"8:orders_model_12.targeting": "0bc62b7d3c060bef8d0a6250", "9:orders_model_12.sourced": "6786f18f6ff42aa577c99d86", "10:orders_model_15.has_model": "b5bea41b6c623f7c09f1bf24", "11:orders_model_15.has_star": "fcbcf165908dd18a9e49f7ff", @@ -4196,13 +4196,13 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "e521909a2fac11893ae5b5ae", +"18:orders_model_3.targeting": "5d4db6051418c956e0e9bf9f", "19:orders_model_3.sourced": "6786f18f6ff42aa577c99d86", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", "22:orders_model_6.edge_count": "4e07408562bedb8b60ce05c1", "23:orders_model_6.targeting": "bba7433c100a9ca120f6fbcf", -"24:orders_model_6.sourced": "75a731a0e214db585bfb87f2", +"24:orders_model_6.sourced": "97274edb0922db5764eacd70", "25:orders_model_9.has_model": "fcbcf165908dd18a9e49f7ff", "26:orders_model_9.has_star": "fcbcf165908dd18a9e49f7ff", "27:orders_model_9.edge_count": "5feceb66ffc86f38d952786c", @@ -4212,7 +4212,7 @@ "31:orders_model_1.has_star": "b5bea41b6c623f7c09f1bf24", "32:orders_model_1.edge_count": "4e07408562bedb8b60ce05c1", "33:orders_model_1.targeting": "452427dd584527df4f8ece1d", -"34:orders_model_1.sourced": "e05e3a7e05249cb12b8be71b", +"34:orders_model_1.sourced": "a707a18e9a8ef123226ba654", "35:orders_model_10.has_model": "fcbcf165908dd18a9e49f7ff", "36:orders_model_10.has_star": "fcbcf165908dd18a9e49f7ff", "37:orders_model_10.edge_count": "5feceb66ffc86f38d952786c", @@ -4247,7 +4247,7 @@ "66:orders_model_2.has_star": "fcbcf165908dd18a9e49f7ff", "67:orders_model_2.edge_count": "6b86b273ff34fce19d6b804e", "68:orders_model_2.targeting": "298d5b8a35679c43fb6941c0", -"69:orders_model_2.sourced": "72e65253e3b52c42cc301d3d", +"69:orders_model_2.sourced": "9419c74497209862569fe441", "70:orders_model_5.has_model": "b5bea41b6c623f7c09f1bf24", "71:orders_model_5.has_star": "fcbcf165908dd18a9e49f7ff", "72:orders_model_5.edge_count": "d4735e3a265e16eee03f5971", @@ -4258,8 +4258,8 @@ "77:orders_model_8.edge_count": "5feceb66ffc86f38d952786c", "78:orders_model_8.targeting": "6786f18f6ff42aa577c99d86", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "df2b797621974f742de9fd11", -"81:edges": "52c427557c914bba9a9e35ab" +"80:models": "aded682d4fd2460a0f8cf217", +"81:edges": "33402670603bd8b4acdde1bf" } ], [ @@ -4273,7 +4273,7 @@ "5:orders_model_12.has_model": "b5bea41b6c623f7c09f1bf24", "6:orders_model_12.has_star": "fcbcf165908dd18a9e49f7ff", "7:orders_model_12.edge_count": "d4735e3a265e16eee03f5971", -"8:orders_model_12.targeting": "6b6e7d84a554f1c399102dc2", +"8:orders_model_12.targeting": "0bc62b7d3c060bef8d0a6250", "9:orders_model_12.sourced": "6786f18f6ff42aa577c99d86", "10:orders_model_15.has_model": "b5bea41b6c623f7c09f1bf24", "11:orders_model_15.has_star": "fcbcf165908dd18a9e49f7ff", @@ -4289,7 +4289,7 @@ "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", "22:orders_model_6.edge_count": "4e07408562bedb8b60ce05c1", "23:orders_model_6.targeting": "bba7433c100a9ca120f6fbcf", -"24:orders_model_6.sourced": "75a731a0e214db585bfb87f2", +"24:orders_model_6.sourced": "97274edb0922db5764eacd70", "25:orders_model_9.has_model": "fcbcf165908dd18a9e49f7ff", "26:orders_model_9.has_star": "fcbcf165908dd18a9e49f7ff", "27:orders_model_9.edge_count": "5feceb66ffc86f38d952786c", @@ -4345,8 +4345,8 @@ "77:orders_model_8.edge_count": "5feceb66ffc86f38d952786c", "78:orders_model_8.targeting": "6786f18f6ff42aa577c99d86", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "d21ff60fa2d22db4570596fd", -"81:edges": "ba8bda07f14b683309b9644e" +"80:models": "53b5fb37a560eeb3cd9f7ac9", +"81:edges": "8ff8ac6bb0b8a4bdf8f29325" } ], [ @@ -4360,7 +4360,7 @@ "5:orders_model_12.has_model": "b5bea41b6c623f7c09f1bf24", "6:orders_model_12.has_star": "fcbcf165908dd18a9e49f7ff", "7:orders_model_12.edge_count": "d4735e3a265e16eee03f5971", -"8:orders_model_12.targeting": "6b6e7d84a554f1c399102dc2", +"8:orders_model_12.targeting": "0bc62b7d3c060bef8d0a6250", "9:orders_model_12.sourced": "6786f18f6ff42aa577c99d86", "10:orders_model_15.has_model": "b5bea41b6c623f7c09f1bf24", "11:orders_model_15.has_star": "fcbcf165908dd18a9e49f7ff", @@ -4370,13 +4370,13 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "e521909a2fac11893ae5b5ae", +"18:orders_model_3.targeting": "5d4db6051418c956e0e9bf9f", "19:orders_model_3.sourced": "8c1dc968fef9c4d3ebd841c0", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", "22:orders_model_6.edge_count": "4e07408562bedb8b60ce05c1", "23:orders_model_6.targeting": "bba7433c100a9ca120f6fbcf", -"24:orders_model_6.sourced": "afa78feb25c212fcbee75d31", +"24:orders_model_6.sourced": "11694929486addc0dfd61c4c", "25:orders_model_9.has_model": "b5bea41b6c623f7c09f1bf24", "26:orders_model_9.has_star": "b5bea41b6c623f7c09f1bf24", "27:orders_model_9.edge_count": "d4735e3a265e16eee03f5971", @@ -4386,7 +4386,7 @@ "31:orders_model_1.has_star": "b5bea41b6c623f7c09f1bf24", "32:orders_model_1.edge_count": "4e07408562bedb8b60ce05c1", "33:orders_model_1.targeting": "452427dd584527df4f8ece1d", -"34:orders_model_1.sourced": "e05e3a7e05249cb12b8be71b", +"34:orders_model_1.sourced": "a707a18e9a8ef123226ba654", "35:orders_model_10.has_model": "b5bea41b6c623f7c09f1bf24", "36:orders_model_10.has_star": "b5bea41b6c623f7c09f1bf24", "37:orders_model_10.edge_count": "4e07408562bedb8b60ce05c1", @@ -4421,7 +4421,7 @@ "66:orders_model_2.has_star": "fcbcf165908dd18a9e49f7ff", "67:orders_model_2.edge_count": "6b86b273ff34fce19d6b804e", "68:orders_model_2.targeting": "298d5b8a35679c43fb6941c0", -"69:orders_model_2.sourced": "72e65253e3b52c42cc301d3d", +"69:orders_model_2.sourced": "9419c74497209862569fe441", "70:orders_model_5.has_model": "b5bea41b6c623f7c09f1bf24", "71:orders_model_5.has_star": "fcbcf165908dd18a9e49f7ff", "72:orders_model_5.edge_count": "d4735e3a265e16eee03f5971", @@ -4432,8 +4432,8 @@ "77:orders_model_8.edge_count": "e7f6c011776e8db7cd330b54", "78:orders_model_8.targeting": "c51ede09dd0dd9ea307d8b73", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "cad28d453612016de9d710ad", -"81:edges": "94ef51eb7120c6d28d78e7a9" +"80:models": "749e1d534697470f3935d867", +"81:edges": "d8db85b053415dd0d0196d35" } ], [ @@ -4447,7 +4447,7 @@ "5:orders_model_12.has_model": "b5bea41b6c623f7c09f1bf24", "6:orders_model_12.has_star": "fcbcf165908dd18a9e49f7ff", "7:orders_model_12.edge_count": "d4735e3a265e16eee03f5971", -"8:orders_model_12.targeting": "6b6e7d84a554f1c399102dc2", +"8:orders_model_12.targeting": "0bc62b7d3c060bef8d0a6250", "9:orders_model_12.sourced": "6786f18f6ff42aa577c99d86", "10:orders_model_15.has_model": "b5bea41b6c623f7c09f1bf24", "11:orders_model_15.has_star": "fcbcf165908dd18a9e49f7ff", @@ -4463,7 +4463,7 @@ "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", "22:orders_model_6.edge_count": "4e07408562bedb8b60ce05c1", "23:orders_model_6.targeting": "bba7433c100a9ca120f6fbcf", -"24:orders_model_6.sourced": "afa78feb25c212fcbee75d31", +"24:orders_model_6.sourced": "11694929486addc0dfd61c4c", "25:orders_model_9.has_model": "b5bea41b6c623f7c09f1bf24", "26:orders_model_9.has_star": "b5bea41b6c623f7c09f1bf24", "27:orders_model_9.edge_count": "d4735e3a265e16eee03f5971", @@ -4519,8 +4519,8 @@ "77:orders_model_8.edge_count": "e7f6c011776e8db7cd330b54", "78:orders_model_8.targeting": "c51ede09dd0dd9ea307d8b73", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "dd4819e2c32cab1e116b1e8a", -"81:edges": "e2c3abddd046f87a696fcea8" +"80:models": "637b0bea7b0226a2e503decf", +"81:edges": "fc51c670340f7889cace5670" } ], [ @@ -4534,7 +4534,7 @@ "5:orders_model_12.has_model": "b5bea41b6c623f7c09f1bf24", "6:orders_model_12.has_star": "fcbcf165908dd18a9e49f7ff", "7:orders_model_12.edge_count": "d4735e3a265e16eee03f5971", -"8:orders_model_12.targeting": "6b6e7d84a554f1c399102dc2", +"8:orders_model_12.targeting": "0bc62b7d3c060bef8d0a6250", "9:orders_model_12.sourced": "6786f18f6ff42aa577c99d86", "10:orders_model_15.has_model": "b5bea41b6c623f7c09f1bf24", "11:orders_model_15.has_star": "fcbcf165908dd18a9e49f7ff", @@ -4544,13 +4544,13 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "e521909a2fac11893ae5b5ae", +"18:orders_model_3.targeting": "5d4db6051418c956e0e9bf9f", "19:orders_model_3.sourced": "8c1dc968fef9c4d3ebd841c0", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", "22:orders_model_6.edge_count": "4e07408562bedb8b60ce05c1", "23:orders_model_6.targeting": "bba7433c100a9ca120f6fbcf", -"24:orders_model_6.sourced": "afa78feb25c212fcbee75d31", +"24:orders_model_6.sourced": "11694929486addc0dfd61c4c", "25:orders_model_9.has_model": "b5bea41b6c623f7c09f1bf24", "26:orders_model_9.has_star": "b5bea41b6c623f7c09f1bf24", "27:orders_model_9.edge_count": "d4735e3a265e16eee03f5971", @@ -4560,7 +4560,7 @@ "31:orders_model_1.has_star": "b5bea41b6c623f7c09f1bf24", "32:orders_model_1.edge_count": "4e07408562bedb8b60ce05c1", "33:orders_model_1.targeting": "452427dd584527df4f8ece1d", -"34:orders_model_1.sourced": "e05e3a7e05249cb12b8be71b", +"34:orders_model_1.sourced": "a707a18e9a8ef123226ba654", "35:orders_model_10.has_model": "b5bea41b6c623f7c09f1bf24", "36:orders_model_10.has_star": "b5bea41b6c623f7c09f1bf24", "37:orders_model_10.edge_count": "4e07408562bedb8b60ce05c1", @@ -4595,7 +4595,7 @@ "66:orders_model_2.has_star": "fcbcf165908dd18a9e49f7ff", "67:orders_model_2.edge_count": "6b86b273ff34fce19d6b804e", "68:orders_model_2.targeting": "298d5b8a35679c43fb6941c0", -"69:orders_model_2.sourced": "72e65253e3b52c42cc301d3d", +"69:orders_model_2.sourced": "9419c74497209862569fe441", "70:orders_model_5.has_model": "b5bea41b6c623f7c09f1bf24", "71:orders_model_5.has_star": "fcbcf165908dd18a9e49f7ff", "72:orders_model_5.edge_count": "d4735e3a265e16eee03f5971", @@ -4606,8 +4606,8 @@ "77:orders_model_8.edge_count": "e7f6c011776e8db7cd330b54", "78:orders_model_8.targeting": "c51ede09dd0dd9ea307d8b73", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "cad28d453612016de9d710ad", -"81:edges": "94ef51eb7120c6d28d78e7a9" +"80:models": "749e1d534697470f3935d867", +"81:edges": "d8db85b053415dd0d0196d35" } ], [ @@ -4621,7 +4621,7 @@ "5:orders_model_12.has_model": "b5bea41b6c623f7c09f1bf24", "6:orders_model_12.has_star": "fcbcf165908dd18a9e49f7ff", "7:orders_model_12.edge_count": "d4735e3a265e16eee03f5971", -"8:orders_model_12.targeting": "6b6e7d84a554f1c399102dc2", +"8:orders_model_12.targeting": "0bc62b7d3c060bef8d0a6250", "9:orders_model_12.sourced": "6786f18f6ff42aa577c99d86", "10:orders_model_15.has_model": "b5bea41b6c623f7c09f1bf24", "11:orders_model_15.has_star": "fcbcf165908dd18a9e49f7ff", @@ -4637,7 +4637,7 @@ "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", "22:orders_model_6.edge_count": "4e07408562bedb8b60ce05c1", "23:orders_model_6.targeting": "bba7433c100a9ca120f6fbcf", -"24:orders_model_6.sourced": "afa78feb25c212fcbee75d31", +"24:orders_model_6.sourced": "11694929486addc0dfd61c4c", "25:orders_model_9.has_model": "b5bea41b6c623f7c09f1bf24", "26:orders_model_9.has_star": "b5bea41b6c623f7c09f1bf24", "27:orders_model_9.edge_count": "d4735e3a265e16eee03f5971", @@ -4693,8 +4693,8 @@ "77:orders_model_8.edge_count": "e7f6c011776e8db7cd330b54", "78:orders_model_8.targeting": "c51ede09dd0dd9ea307d8b73", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "dd4819e2c32cab1e116b1e8a", -"81:edges": "e2c3abddd046f87a696fcea8" +"80:models": "637b0bea7b0226a2e503decf", +"81:edges": "fc51c670340f7889cace5670" } ], [ @@ -4708,7 +4708,7 @@ "5:orders_model_12.has_model": "b5bea41b6c623f7c09f1bf24", "6:orders_model_12.has_star": "fcbcf165908dd18a9e49f7ff", "7:orders_model_12.edge_count": "d4735e3a265e16eee03f5971", -"8:orders_model_12.targeting": "6b6e7d84a554f1c399102dc2", +"8:orders_model_12.targeting": "0bc62b7d3c060bef8d0a6250", "9:orders_model_12.sourced": "6786f18f6ff42aa577c99d86", "10:orders_model_15.has_model": "b5bea41b6c623f7c09f1bf24", "11:orders_model_15.has_star": "fcbcf165908dd18a9e49f7ff", @@ -4718,13 +4718,13 @@ "15:orders_model_3.has_model": "b5bea41b6c623f7c09f1bf24", "16:orders_model_3.has_star": "fcbcf165908dd18a9e49f7ff", "17:orders_model_3.edge_count": "d4735e3a265e16eee03f5971", -"18:orders_model_3.targeting": "e521909a2fac11893ae5b5ae", +"18:orders_model_3.targeting": "5d4db6051418c956e0e9bf9f", "19:orders_model_3.sourced": "8c1dc968fef9c4d3ebd841c0", "20:orders_model_6.has_model": "b5bea41b6c623f7c09f1bf24", "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", "22:orders_model_6.edge_count": "4e07408562bedb8b60ce05c1", "23:orders_model_6.targeting": "bba7433c100a9ca120f6fbcf", -"24:orders_model_6.sourced": "afa78feb25c212fcbee75d31", +"24:orders_model_6.sourced": "11694929486addc0dfd61c4c", "25:orders_model_9.has_model": "b5bea41b6c623f7c09f1bf24", "26:orders_model_9.has_star": "b5bea41b6c623f7c09f1bf24", "27:orders_model_9.edge_count": "d4735e3a265e16eee03f5971", @@ -4734,7 +4734,7 @@ "31:orders_model_1.has_star": "b5bea41b6c623f7c09f1bf24", "32:orders_model_1.edge_count": "4e07408562bedb8b60ce05c1", "33:orders_model_1.targeting": "452427dd584527df4f8ece1d", -"34:orders_model_1.sourced": "e05e3a7e05249cb12b8be71b", +"34:orders_model_1.sourced": "a707a18e9a8ef123226ba654", "35:orders_model_10.has_model": "b5bea41b6c623f7c09f1bf24", "36:orders_model_10.has_star": "b5bea41b6c623f7c09f1bf24", "37:orders_model_10.edge_count": "4e07408562bedb8b60ce05c1", @@ -4769,7 +4769,7 @@ "66:orders_model_2.has_star": "fcbcf165908dd18a9e49f7ff", "67:orders_model_2.edge_count": "6b86b273ff34fce19d6b804e", "68:orders_model_2.targeting": "298d5b8a35679c43fb6941c0", -"69:orders_model_2.sourced": "72e65253e3b52c42cc301d3d", +"69:orders_model_2.sourced": "9419c74497209862569fe441", "70:orders_model_5.has_model": "b5bea41b6c623f7c09f1bf24", "71:orders_model_5.has_star": "fcbcf165908dd18a9e49f7ff", "72:orders_model_5.edge_count": "d4735e3a265e16eee03f5971", @@ -4780,8 +4780,8 @@ "77:orders_model_8.edge_count": "e7f6c011776e8db7cd330b54", "78:orders_model_8.targeting": "c51ede09dd0dd9ea307d8b73", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "cad28d453612016de9d710ad", -"81:edges": "94ef51eb7120c6d28d78e7a9" +"80:models": "749e1d534697470f3935d867", +"81:edges": "d8db85b053415dd0d0196d35" } ], [ @@ -4795,7 +4795,7 @@ "5:orders_model_12.has_model": "b5bea41b6c623f7c09f1bf24", "6:orders_model_12.has_star": "fcbcf165908dd18a9e49f7ff", "7:orders_model_12.edge_count": "d4735e3a265e16eee03f5971", -"8:orders_model_12.targeting": "6b6e7d84a554f1c399102dc2", +"8:orders_model_12.targeting": "0bc62b7d3c060bef8d0a6250", "9:orders_model_12.sourced": "6786f18f6ff42aa577c99d86", "10:orders_model_15.has_model": "b5bea41b6c623f7c09f1bf24", "11:orders_model_15.has_star": "fcbcf165908dd18a9e49f7ff", @@ -4811,7 +4811,7 @@ "21:orders_model_6.has_star": "fcbcf165908dd18a9e49f7ff", "22:orders_model_6.edge_count": "4e07408562bedb8b60ce05c1", "23:orders_model_6.targeting": "bba7433c100a9ca120f6fbcf", -"24:orders_model_6.sourced": "afa78feb25c212fcbee75d31", +"24:orders_model_6.sourced": "11694929486addc0dfd61c4c", "25:orders_model_9.has_model": "b5bea41b6c623f7c09f1bf24", "26:orders_model_9.has_star": "b5bea41b6c623f7c09f1bf24", "27:orders_model_9.edge_count": "d4735e3a265e16eee03f5971", @@ -4867,8 +4867,8 @@ "77:orders_model_8.edge_count": "e7f6c011776e8db7cd330b54", "78:orders_model_8.targeting": "c51ede09dd0dd9ea307d8b73", "79:orders_model_8.sourced": "6786f18f6ff42aa577c99d86", -"80:models": "dd4819e2c32cab1e116b1e8a", -"81:edges": "e2c3abddd046f87a696fcea8" +"80:models": "637b0bea7b0226a2e503decf", +"81:edges": "fc51c670340f7889cace5670" } ], [