MOBY
01/06/2026, 9:23 AM~ could not evaluate expression (greatest(record.DateAdded,record.LastChanged,record._sling_deleted_at)), with value=<nil> for column true_changed_at
DateAdded,LageChanged and _sling_deleted_at all do exist as columns.
prod_<company>.zm_locs:
transforms:
- true_changed_at: 'greatest(record.DateAdded,record.LastChanged,record._sling_deleted_at)'
target_options:
format: parquet
Any help with this would be greatly appreciated <3flarco
01/06/2026, 5:12 PM--debug or env var DEBUG=trueflarco
01/06/2026, 5:13 PMMOBY
01/08/2026, 9:39 AMfatal:
--- proc.go:283 main ---
--- sling_cli.go:525 main ---
--- sling_cli.go:561 cliInit ---
--- cli.go:287 CliProcess ---
--- sling_run.go:269 processRun ---
--- sling_run.go:688 runPipeline ---
~ failure running pipeline (see docs @ https://docs.slingdata.io)
--- pipeline.go:185 Execute ---
~ error executing step: ingest
--- pipeline.go:301 Execute ---
~ error running replication
--- hooks..go:2171 Execute ---
--------------------------- prod_<company>.zm_locs ---------------------------
--- task_run.go:142 func2 ---
~ Could not ReadFromDB
--- task_run.go:837 runDbToDb ---
~ Could not BulkExportFlow
--- task_run_read.go:244 ReadFromDB ---
--- database.go:2501 BulkExportFlow ---
~ dataflow error while waiting for ready state
--- dataflow.go:700 WaitReady ---
--- database.go:2482 func1 ---
--- database_mysql.go:376 BulkExportStream ---
~ Error running query
--- database.go:834 StreamRows ---
~ could start datastream
--- database.go:983 StreamRowsContext ---
~ error in getting rows
--- datastream.go:787 Start ---
--- database.go:2482 func1 ---
--- database_mysql.go:376 BulkExportStream ---
--- database.go:834 StreamRows ---
--- database.go:983 StreamRowsContext ---
--- datastream.go:727 Start ---
~ could not evaluate expression (greatest(record.DateAdded,record.LastChanged,record._sling_deleted_at)), with value=<nil> for column true_changed_at
--- transform_stage..go:300 Evaluate ---
var error: object has no member "DateAdded"
Where DateAdded very much exists and has a value set for every record. Thank you!flarco
01/08/2026, 4:27 PMgreatest(record.dateadded,record.lastchanged,record._sling_deleted_at)
I'll add some notes in the docs about this, thanks for raisingMOBY
01/08/2026, 4:28 PMMOBY
01/08/2026, 4:32 PM_sling_deleted_at
~ could not evaluate expression (greatest(record.dateadded,record.lastchanged,record._sling_deleted_at)), with value=<nil> for column true_changed_at
--- transform_stage..go:300 Evaluate ---
var error: object has no member "_sling_deleted_at"
I can ignore it for now, but it is something we would like to have working IF the record doesnt have that valueMOBY
01/08/2026, 4:40 PM--- database_bigquery.go:260 ExecContext ---
googleapi: Error 400: Bad int64 value: 2025-09-04 16:31:31 +00, invalidQuery
That one seems fairly self explanitory though!flarco
01/08/2026, 4:51 PM_sling_deleted_at works for me. Maybe that one doesn't exist? You can also try record["_sling_deleted_at"]flarco
01/08/2026, 4:52 PMMOBY
01/08/2026, 4:53 PM_sling_delted_atMOBY
01/08/2026, 4:55 PM--- database_bigquery.go:260 ExecContext ---
googleapi: Error 400: Bad int64 value: 2025-09-04 16:31:31 +00, invalidQuery
This is being quite difficult now. Are there any known issues with creating new datetime columns?flarco
01/08/2026, 5:03 PMdateadded and lastchanged are both datetime/timestamp types?
try cast(greatest(record.dateadded, record.lastchanged), "timestamp")flarco
01/08/2026, 5:06 PMMOBY
01/08/2026, 5:08 PMfunction error: "cast" - parsing time "\"2025-09-04T16:31:31Z\"" as "Mon, 02 Jan 2006 15:04:05 -0700": cannot parse "\"2025-09-04T16:31:31Z\"" as "Mon"flarco
01/08/2026, 5:21 PMflarco
01/08/2026, 6:04 PMgreatest. This is already fixed in the next release. this below works for now as a work-around:
transforms:
- true_changed_at: >
greatest(
date_parse(replace(record.dateadded, "\"", "")),
date_parse(replace(record.lastchanged, "\"", "")),
date_parse(replace(record._sling_deleted_at, "\"", ""))
)
in next release (1.5.5), you'll just do this:
- true_changed_at: >
greatest(
date_parse(record.dateadded),
date_parse(record.lastchanged),
date_parse(record._sling_deleted_at)
)MOBY
01/08/2026, 7:09 PMvar error: object has no member "_sling_deleted_at" also?flarco
01/08/2026, 9:24 PM_sling_deleted_at is working fine for me, this test file [here](https://github.com/slingdata-io/sling-cli/blob/v1.5.5/cmd/sling/tests/replications/r.87.record_key_casing_bigquery.yaml) is passing fine with the latest code changes.
Not too sure what's going on on your side. Could you share the mysql source table DDL (at least for those 3 columns)?
Even if the value is null, that shouldn't cause it to fail.MOBY
01/08/2026, 9:24 PMMOBY
01/08/2026, 9:32 PMMOBY
01/08/2026, 9:34 PMMOBY
01/08/2026, 9:39 PM--- database_bigquery.go:260 ExecContext ---
googleapi: Error 400: Invalid cast from TIMESTAMP to INT64 at [3:1153], invalidQueryMOBY
01/08/2026, 9:39 PMflarco
01/08/2026, 9:49 PMMOBY
01/08/2026, 10:38 PMflarco
01/08/2026, 10:39 PMMOBY
01/08/2026, 10:39 PMMOBY
01/08/2026, 10:39 PMMOBY
01/08/2026, 10:40 PMMOBY
01/08/2026, 10:40 PM--------------------------- prod_<company>.zm_locs ---------------------------
--- task_run.go:142 func2 ---
--- task_run.go:882 runDbToDb ---
~ could not delete missing records
--- task_run_delete..go:87 deleteMissingRecords ---
~ could not query source IDs
--- database.go:834 StreamRows ---
~ could start datastream
--- database.go:983 StreamRowsContext ---
~ error in getting rows
--- datastream.go:787 Start ---
--- task_run.go:142 func2 ---
--- task_run.go:882 runDbToDb ---
--- task_run_delete..go:87 deleteMissingRecords ---
--- database.go:834 StreamRows ---
--- database.go:983 StreamRowsContext ---
--- datastream.go:727 Start ---
~ could not evaluate expression (greatest(
date_parse(replace(record.dateadded, "\"", "")),
date_parse(replace(record.lastchanged, "\"", ""))
)
), with value=<nil> for column true_changed_at
--- transform_stage..go:300 Evaluate ---
var error: object has no member "dateadded"MOBY
01/08/2026, 10:40 PMflarco
01/08/2026, 10:41 PMMOBY
01/08/2026, 10:42 PMDateAdded existsMOBY
01/08/2026, 10:54 PM--------------------------- prod_<company>.zm_locs ---------------------------
--- task_run.go:142 func2 ---
~ Could not ReadFromDB
--- task_run.go:837 runDbToDb ---
~ Could not BulkExportFlow
--- task_run_read.go:244 ReadFromDB ---
--- database.go:2501 BulkExportFlow ---
~ dataflow error while waiting for ready state
--- dataflow.go:700 WaitReady ---
--- database.go:2482 func1 ---
--- database_mysql.go:376 BulkExportStream ---
~ Error running query
--- database.go:834 StreamRows ---
~ could start datastream
--- database.go:983 StreamRowsContext ---
~ error in getting rows
--- datastream.go:787 Start ---
--- database.go:2482 func1 ---
--- database_mysql.go:376 BulkExportStream ---
--- database.go:834 StreamRows ---
--- database.go:983 StreamRowsContext ---
--- datastream.go:727 Start ---
~ could not evaluate expression (greatest(
date_parse(replace(record.DateAdded, "\"", "")),
date_parse(replace(record.LastChanged, "\"", ""))
)
), with value=<nil> for column true_changed_at
--- transform_stage..go:300 Evaluate ---
var error: object has no member "DateAdded"MOBY
01/08/2026, 10:54 PM--------------------------- prod_<company>.zm_locs ---------------------------
--- task_run.go:142 func2 ---
--- task_run.go:882 runDbToDb ---
~ could not delete missing records
--- task_run_delete..go:87 deleteMissingRecords ---
~ could not query source IDs
--- database.go:834 StreamRows ---
~ could start datastream
--- database.go:983 StreamRowsContext ---
~ error in getting rows
--- datastream.go:787 Start ---
--- task_run.go:142 func2 ---
--- task_run.go:882 runDbToDb ---
--- task_run_delete..go:87 deleteMissingRecords ---
--- database.go:834 StreamRows ---
--- database.go:983 StreamRowsContext ---
--- datastream.go:727 Start ---
~ could not evaluate expression (greatest(
date_parse(replace(record.dateadded, "\"", "")),
date_parse(replace(record.lastchanged, "\"", ""))
)
), with value=<nil> for column true_changed_at
--- transform_stage..go:300 Evaluate ---
var error: object has no member "dateadded"MOBY
01/08/2026, 11:10 PM-- prod_<company>.zm_locs definition
CREATE TABLE `zm_locs` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`DateAdded` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`LastChanged` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`deleted_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `loc_num_uk` (`LocNum`),
KEY `FK_zm_locs_zm_location_category` (`location_category_id`),
KEY `LastChanged` (`LastChanged`),
KEY `postcode` (`Postcode`),
KEY `party_number_index` (`party_number`),
KEY `idx_locs_external_reference` (`party_number`,`external_id`),
KEY `fk__locs__network_id` (`network_id`),
KEY `ranking` (`ranking`),
KEY `locale_search` (`CountryCode`,`PostTown`),
SPATIAL KEY `coordinates` (`coordinates`),
CONSTRAINT `fk__locs__network_id` FOREIGN KEY (`network_id`) REFERENCES `zm_network` (`id`),
CONSTRAINT `FK_zm_locs_zm_location_category` FOREIGN KEY (`location_category_id`) REFERENCES `zm_location_category` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5104071 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci;
DDLMOBY
01/16/2026, 11:39 AMflarco
01/16/2026, 11:41 AMsource: mysql
target: bigquery
hooks:
start:
- type: query
connection: '{source.name}'
query: |
DROP TABLE IF EXISTS mysql.test_record_key_casing;
CREATE TABLE mysql.test_record_key_casing (
`id` int unsigned NOT NULL,
`DateAdded` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`LastChanged` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`_sling_deleted_at` TIMESTAMP NULL,
value TEXT
);
INSERT INTO mysql.test_record_key_casing (id, `DateAdded`, `LastChanged`, `_sling_deleted_at`, value)
VALUES
(1, '2024-01-15 10:00:00', '2024-01-20 15:30:00', NULL, 'row1'),
(2, '2024-02-10 08:00:00', '2024-02-25 12:00:00', '2024-03-01 09:00:00', NULL),
(3, '2024-03-05 09:00:00', '2024-03-10 18:00:00', NULL, 'row3');
streams:
mysql.test_record_key_casing:
object: public.test_record_key_casing
mode: full-refresh
target_options:
direct_insert: true
transforms:
- true_changed_at: >
greatest(
date_parse(replace(record.dateadded, "\"", "")),
date_parse(replace(record.lastchanged, "\"", ""))
)flarco
01/16/2026, 11:42 AMMOBY
01/16/2026, 11:44 AMMOBY
01/16/2026, 12:02 PMMOBY
01/16/2026, 12:04 PMMOBY
01/16/2026, 12:25 PM2026-01-16 12:18:57 INF inserted 279279 rows into `prod_<company>`.`zm_locs` in 61 secs [4,505 r/s] [96 MB]
2026-01-16 12:18:57 INF processing missing soft ID deletion for columns ["id"] into table `prod_<company>`.`zm_locs`
2026-01-16 12:18:58 DBG create table `prod_<company>`.`zm_locs_temp_ids` (`id` int64) [ingest-bigquery-prod-q2P]
2026-01-16 12:19:00 DBG select `id` from `prod_<company>`.`zm_locs` [doprod-general-01-kgO]
2026-01-16 12:19:00 DBG adding column via transform: true_changed_at
2026-01-16 12:19:00 DBG applying column casing (normalize) for target type (bigquery)
2026-01-16 12:19:00 DBG applying column casing (normalize) for target type (bigquery)
2026-01-16 12:19:00 DBG drop table if exists `prod_<company>`.`zm_locs_temp_ids` [ingest-bigquery-prod-q2P]
2026-01-16 12:19:00 DBG table `prod_<company>`.`zm_locs_temp_ids` dropped
2026-01-16 12:19:00 DBG drop table if exists `prod_<company>`.`zm_locs_tmp` [ingest-bigquery-prod-q2P]
2026-01-16 12:19:01 DBG table `prod_<company>`.`zm_locs_tmp` dropped
2026-01-16 12:19:01 DBG closed "bigquery" connection (conn-bigquery-ingest-bigquery-prod-q2P)
2026-01-16 12:19:01 DBG closed "mysql" connection (conn-mysql-doprod-general-01-kgO)
2026-01-16 12:19:01 INF execution failed
2026-01-16 12:19:01 WRN could not write pipeline store to file: open /home/sling/.sling/executions/38L5BQLDm95Z2JgzXipIopJ2Xvk/runtime/_pipeline_store_.json: no such file or directory
2026-01-16 12:19:01 DBG failure while executing step "ingest" (type: replication) =>MOBY
01/16/2026, 2:13 PMflarco
01/16/2026, 2:58 PMflarco
01/19/2026, 3:24 AMMOBY
01/19/2026, 8:56 AM