slingdata-io / sling-cli

Sling is a CLI tool that extracts data from a source storage/database and loads it in a target storage/database.
https://docs.slingdata.io
GNU General Public License v3.0
398 stars 27 forks source link

mssql: The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified. #264

Closed morindo closed 5 months ago

morindo commented 5 months ago

Issue Description

When trying to run sling in incremental mode with sqlserver, I'm getting a sql error when I try to exclude columns from the stream configuration.

streams:
  dbo.biz_cpt_deposit_slip:
    mode: incremental
    primary_key: [id]
    update_key: createdonutc
    select: [id, propertyid, date, type]
fatal:
~ failure running replication (see docs @ https://docs.slingdata.io/sling-cli)
--------------------------- dbo.biz_cpt_deposit_slip---------------------------
~ dataflow error while waiting for ready state
~ SQL Error for:
select "id", "propertyid", "date", "type" from (
select id, propertyid, date, type from "dbo"."biz_cpt_deposit_slip" where "createdonutc" >= '2024-04-05 03:44:23.086' order by "createdonutc" asc
) t
mssql: The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified.

Unfortunately SQL Server does not support order by clause inside a sub query. Is there any solution for this? Could we change the sqlserver.yaml template?

Thank you,

source: magma
target: magma_dw

defaults:
  mode: full-refresh
  object: dbo.{stream_table}
  primary_key: [id]
  source_options:
    empty_as_null: true

streams:
  dbo.biz_cpt_deposit_slip:
    mode: incremental
    primary_key: [id]
    update_key: createdonutc
    select: [id, propertyid, date, type]

env:
  # adds the _sling_loaded_at timestamp column
  SLING_LOADED_AT_COLUMN: true
  ...
2024-04-16 11:48:56 INF Sling Replication [3 streams] | magma -> magma_dw

2024-04-16 11:48:56 INF [1 / 3] running stream dbo.biz_cpt_deposit_slip
2024-04-16 11:48:56 DBG Sling version: 1.2.5 (windows amd64)
2024-04-16 11:48:56 DBG type is db-db
2024-04-16 11:48:56 DBG using source options: {"empty_as_null":true,"null_if":"NULL","datetime_format":"AUTO","max_decimals":-1,"columns":{}}
2024-04-16 11:48:56 DBG using target options: {"datetime_format":"auto","max_decimals":-1,"use_bulk":true,"add_new_columns":true,"adjust_column_type":false,"column_casing":"source"}
2024-04-16 11:48:56 INF connecting to source database (sqlserver)
2024-04-16 11:48:56 DBG opened "sqlserver" connection (conn-sqlserver-XBM)
2024-04-16 11:48:56 INF connecting to target database (sqlserver)
2024-04-16 11:48:56 DBG opened "sqlserver" connection (conn-sqlserver-hRJ)
2024-04-16 11:48:56 INF getting checkpoint value
2024-04-16 11:48:56 DBG select max("createdonutc") as max_val from "dbo"."biz_cpt_deposit_slip"
2024-04-16 11:48:56 INF reading from source database
2024-04-16 11:48:56 DBG select "id", "propertyid", "date", "type" from (
select id, propertyid, date, type from "dbo"."biz_cpt_deposit_slip" where "createdonutc" >= '2024-04-05 03:44:23.086' order by "createdonutc" asc
) t
2024-04-16 11:48:56 INF execution failed
2024-04-16 11:48:57 INF ~ dataflow error while waiting for ready state
--- database.go:2431 func1 ---
--- database.go:767 BulkExportStream ---
~ Error running query
--- database.go:778 StreamRows ---
~ SQL Error for:
select "id", "propertyid", "date", "type" from (
select id, propertyid, date, type from "dbo"."biz_cpt_deposit_slip" where "createdonutc" >= '2024-04-05 03:44:23.086' order by "createdonutc" asc
) t
--- database.go:824 StreamRowsContext ---
mssql: The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified.      

context canceled

2024-04-16 11:48:57 INF [2 / 3] running stream dbo.biz_cpt_inflow
2024-04-16 11:48:57 DBG Sling version: 1.2.5 (windows amd64)
2024-04-16 11:48:57 DBG type is db-db
2024-04-16 11:48:57 DBG using source options: {"empty_as_null":true,"null_if":"NULL","datetime_format":"AUTO","max_decimals":-1,"columns":{}}
2024-04-16 11:48:57 DBG using target options: {"datetime_format":"auto","max_decimals":-1,"use_bulk":true,"add_new_columns":true,"adjust_column_type":false,"column_casing":"source"}
2024-04-16 11:48:57 INF connecting to source database (sqlserver)
2024-04-16 11:48:57 INF connecting to target database (sqlserver)
2024-04-16 11:48:57 INF getting checkpoint value
2024-04-16 11:48:57 DBG select max("createdonutc") as max_val from "dbo"."biz_cpt_inflow"
2024-04-16 11:48:57 INF reading from source database
2024-04-16 11:48:57 DBG select * from "dbo"."biz_cpt_inflow" where "createdonutc" >= '5015-04-01 04:00:00.000' order by "createdonutc" asc
2024-04-16 11:48:57 INF writing to target database [mode: incremental]
2024-04-16 11:48:57 DBG IF OBJECT_ID(N'"dbo"."biz_cpt_inflow_tmp"', N'U') IS NOT NULL DROP TABLE "dbo"."biz_cpt_inflow_tmp"
2024-04-16 11:48:57 DBG table "dbo"."biz_cpt_inflow_tmp" dropped
2024-04-16 11:48:57 DBG create table "dbo"."biz_cpt_inflow_tmp" ("id" integer,
"propertyid" nvarchar(max),
"depositslipid" integer,
"batchid" bigint,
"date" date,
"totalamount" decimal(24,6),
"description" nvarchar(max),
"deleted" smallint,
"status" integer,
"number" nvarchar(max),
"parentppaid" integer,
"type" nvarchar(max),
"validationstatus" smallint,
"createdby" integer,
"privatenote" nvarchar(max),
"transactiondetailid" integer,
"upperbeepaylighttransactionid" nvarchar(max),
"createdonutc" datetime2,
"createdon" datetime2,
"bamboratransactionid" nvarchar(max),
"chargebeeusageid" nvarchar(max),
"payername" nvarchar(max),
"chargebeechargeid" nvarchar(max),
"withfees" smallint,
"sourceid" nvarchar(max),
"source" nvarchar(max),
"_sling_loaded_at" integer)
2024-04-16 11:48:57 INF streaming data
2024-04-16 11:48:57 DBG bcp version is 15
2024-04-16 11:48:57 DBG bcp 'dbo.biz_cpt_inflow_tmp' in 'C:/Users/Dominic/AppData/Local/Temp/sqlserver.1713282537349.KMU1.csv' -S '****' -d 'MagmaDW' -t ',' -m '1' -c -q -b '50000' -F '2' -e 'C:/Users/Dominic/AppData/Local/Temp/sqlserver.1713282537380.EKH.error' -U 'sa' -P '****'
2024-04-16 11:48:57 DBG select count(*) cnt from "dbo"."biz_cpt_inflow_tmp"
2024-04-16 11:48:57 DBG comparing checksums ["id [integer | int]","propertyid [text | nvarchar]","depositslipid [integer | int]","batchid [bigint | bigint]","date [date | date]","totalamount [decimal | decimal]","description [text | nvarchar]","deleted [smallint | smallint]","status [integer | int]","number [text | nvarchar]","parentppaid [integer | int]","type [text | nvarchar]","validationstatus [smallint | smallint]","createdby [integer | int]","privatenote [text | nvarchar]","transactiondetailid [integer | int]","upperbeepaylighttransactionid [text | nvarchar]","createdonutc [datetime | datetime2]","createdon [datetime | datetime2]","bamboratransactionid [text | nvarchar]","chargebeeusageid [text | nvarchar]","payername [text | nvarchar]","chargebeechargeid [text | nvarchar]","withfees [smallint | smallint]","sourceid [text | nvarchar]","source [text | nvarchar]","_sling_loaded_at [integer | int]"]
2024-04-16 11:48:57 DBG select sum(CAST("id" as bigint)) as "id", sum(datalength("propertyid")) as "propertyid", sum(CAST("depositslipid" as bigint)) as "depositslipid", sum(CAST("batchid" as bigint)) as "batchid", sum((CAST(DATEDIFF(ss, '01-01-1970 00:00:00', "date") as bigint) * 1000000)) as "date", sum(ABS(CAST("totalamount" as bigint))) as "totalamount", sum(datalength("description")) as "description", sum(CAST("deleted" as bigint)) as "deleted", sum(CAST("status" as bigint)) as "status", sum(datalength("number")) as "number", sum(CAST("parentppaid" as bigint)) as "parentppaid", sum(datalength("type")) as "type", sum(CAST("validationstatus" as bigint)) as "validationstatus", sum(CAST("createdby" as bigint)) as "createdby", sum(datalength("privatenote")) as "privatenote", sum(CAST("transactiondetailid" as bigint)) as "transactiondetailid", sum(datalength("upperbeepaylighttransactionid")) as "upperbeepaylighttransactionid", sum((CAST(DATEDIFF(ss, '01-01-1970 00:00:00', "createdonutc") as bigint) * 1000000) + DATEPART(microsecond, "createdonutc")) as "createdonutc", sum((CAST(DATEDIFF(ss, '01-01-1970 00:00:00', "createdon") as bigint) * 1000000) + DATEPART(microsecond, "createdon")) as "createdon", sum(datalength("bamboratransactionid")) as "bamboratransactionid", sum(datalength("chargebeeusageid")) as "chargebeeusageid", sum(datalength("payername")) as "payername", sum(datalength("chargebeechargeid")) as "chargebeechargeid", sum(CAST("withfees" as bigint)) as "withfees", sum(datalength("sourceid")) as "sourceid", sum(datalength("source")) as "source", sum(CAST("_sling_loaded_at" as bigint)) as "_sling_loaded_at" from "dbo"."biz_cpt_inflow_tmp"
2024-04-16 11:48:57 DBG
--- task_run.go:99 func1 ---
--- task_run.go:523 runDbToDb ---
--- task_run_write.go:361 WriteToDb ---
--- database.go:2968 CompareChecksums ---
--- database.go:1158 Query ---
--- database.go:1171 QueryContext ---
--- database.go:913 StreamRowsContext ---
--- datastream.go:596 Start ---
--- datastream.go:2265 next ---
~ error during iteration in nextFunc
--- database.go:898 func2 ---
mssql: The datediff function resulted in an overflow. The number of dateparts separating two date/time instances is too large. Try to use datediff with a less precise datepart.  

context canceled
2024-04-16 11:48:57 DBG MERGE INTO "dbo"."biz_cpt_inflow" tgt
        USING (SELECT * FROM "dbo"."biz_cpt_inflow_tmp") src
        ON (src."id" = tgt."id")
        WHEN MATCHED THEN
                UPDATE SET "propertyid" = src."propertyid", "depositslipid" = src."depositslipid", "batchid" = src."batchid", "date" = src."date", "totalamount" = src."totalamount", "description" = src."description", "deleted" = src."deleted", "status" = src."status", "number" = src."number", "parentppaid" = src."parentppaid", "type" = src."type", "validationstatus" = src."validationstatus", "createdby" = src."createdby", "privatenote" = src."privatenote", "transactiondetailid" = src."transactiondetailid", "upperbeepaylighttransactionid" = src."upperbeepaylighttransactionid", "createdonutc" = src."createdonutc", "createdon" = src."createdon", "bamboratransactionid" = src."bamboratransactionid", "chargebeeusageid" = src."chargebeeusageid", "payername" = src."payername", "chargebeechargeid" = src."chargebeechargeid", "withfees" = src."withfees", "sourceid" = src."sourceid", "source" = src."source", "_sling_loaded_at" = src."_sling_loaded_at"
        WHEN NOT MATCHED THEN
                INSERT ("id", "propertyid", "depositslipid", "batchid", "date", "totalamount", "description", "deleted", "status", "number", "parentppaid", "type", "validationstatus", "createdby", "privatenote", "transactiondetailid", "upperbeepaylighttransactionid", "createdonutc", "createdon", "bamboratransactionid", "chargebeeusageid", "payername", "chargebeechargeid", "withfees", "sourceid", "source", "_sling_loaded_at") VALUES (src."id", src."propertyid", src."depositslipid", src."batchid", src."date", src."totalamount", src."description", src."deleted", src."status", src."number", src."parentppaid", src."type", src."validationstatus", src."createdby", src."privatenote", src."transactiondetailid", src."upperbeepaylighttransactionid", src."createdonutc", src."createdon", src."bamboratransactionid", src."chargebeeusageid", src."payername", src."chargebeechargeid", src."withfees", src."sourceid", src."source", src."_sling_loaded_at")
2024-04-16 11:48:57 DBG 1 TOTAL INSERTS / UPDATES
2024-04-16 11:48:57 INF inserted 1 rows into "dbo"."biz_cpt_inflow" in 0 secs [2 r/s] [154 B]
2024-04-16 11:48:57 DBG IF OBJECT_ID(N'"dbo"."biz_cpt_inflow_tmp"', N'U') IS NOT NULL DROP TABLE "dbo"."biz_cpt_inflow_tmp"
2024-04-16 11:48:57 DBG table "dbo"."biz_cpt_inflow_tmp" dropped
2024-04-16 11:48:57 DBG closed "sqlserver" connection (conn-sqlserver-hRJ)
2024-04-16 11:48:57 INF execution succeeded

2024-04-16 11:48:57 INF [3 / 3] running stream dbo.biz_syndicate
2024-04-16 11:48:57 DBG Sling version: 1.2.5 (windows amd64)
2024-04-16 11:48:57 DBG type is db-db
2024-04-16 11:48:57 DBG using source options: {"empty_as_null":true,"null_if":"NULL","datetime_format":"AUTO","max_decimals":-1,"columns":{}}
2024-04-16 11:48:57 DBG using target options: {"datetime_format":"auto","max_decimals":-1,"use_bulk":true,"add_new_columns":true,"adjust_column_type":false,"column_casing":"source"}
2024-04-16 11:48:57 INF connecting to source database (sqlserver)
2024-04-16 11:48:57 INF connecting to target database (sqlserver)
2024-04-16 11:48:57 DBG opened "sqlserver" connection (conn-sqlserver-hRJ)
2024-04-16 11:48:57 INF getting checkpoint value
2024-04-16 11:48:57 DBG select max("createdon") as max_val from "dbo"."biz_syndicate"
2024-04-16 11:48:57 INF reading from source database
2024-04-16 11:48:57 DBG select * from "dbo"."biz_syndicate" where "createdon" >= '2024-04-04 10:12:37.917' order by "createdon" asc
2024-04-16 11:48:57 INF writing to target database [mode: incremental]
2024-04-16 11:48:57 DBG IF OBJECT_ID(N'"dbo"."biz_syndicate_tmp"', N'U') IS NOT NULL DROP TABLE "dbo"."biz_syndicate_tmp"
2024-04-16 11:48:57 DBG table "dbo"."biz_syndicate_tmp" dropped
2024-04-16 11:48:57 DBG create table "dbo"."biz_syndicate_tmp" ("id" nvarchar(max),
"name" nvarchar(max),
"issharesvalid" smallint,
"managerid" integer,
"createdon" datetime2,
"settingsid" integer,
"defaultownergroupid" integer,
"currentsubscriptionid" integer,
"documentparameterid" integer,
"financialid" integer,
"defaultpersonid" integer,
"marketid" integer,
"lastmodifiedon" datetime2,
"parentid" nvarchar(max),
"subdomain" nvarchar(max),
"themeid" nvarchar(max),
"subscriptionbillingid" integer,
"orientation" smallint,
"type" smallint,
"status" smallint,
"legalname" nvarchar(max),
"internalnote" nvarchar(max),
"istest" smallint,
"sharpspringaccountid" nvarchar(max),
"defaultleasetype" smallint,
"electronicleaseconfigid" integer,
"archivedonutc" datetime2,
"_sling_loaded_at" integer)
2024-04-16 11:48:57 INF streaming data
2024-04-16 11:48:57 DBG bcp version is 15
2024-04-16 11:48:57 DBG bcp 'dbo.biz_syndicate_tmp' in 'C:/Users/Dominic/AppData/Local/Temp/sqlserver.1713282537797.0Ir1.csv' -S '****' -d 'MagmaDW' -t ',' -m '1' -c -q -b '50000' -F '2' -e 'C:/Users/Dominic/AppData/Local/Temp/sqlserver.1713282537843.rZX.error' -U 'sa' -P '****'
2024-04-16 11:48:57 DBG select count(*) cnt from "dbo"."biz_syndicate_tmp"
2024-04-16 11:48:57 DBG comparing checksums ["id [text | nvarchar]","name [text | nvarchar]","issharesvalid [smallint | smallint]","managerid [integer | int]","createdon [datetime | datetime2]","settingsid [integer | int]","defaultownergroupid [integer | int]","currentsubscriptionid [integer | int]","documentparameterid [integer | int]","financialid [integer | int]","defaultpersonid [integer | int]","marketid [integer | int]","lastmodifiedon [datetime | datetime2]","parentid [text | nvarchar]","subdomain [text | nvarchar]","themeid [text | nvarchar]","subscriptionbillingid [integer | int]","orientation [smallint | smallint]","type [smallint | smallint]","status [smallint | smallint]","legalname [text | nvarchar]","internalnote [text | nvarchar]","istest [smallint | smallint]","sharpspringaccountid [text | nvarchar]","defaultleasetype [smallint | smallint]","electronicleaseconfigid [integer | int]","archivedonutc [datetime | datetime2]","_sling_loaded_at [integer | int]"]
2024-04-16 11:48:57 DBG select sum(datalength("id")) as "id", sum(datalength("name")) as "name", sum(CAST("issharesvalid" as bigint)) as "issharesvalid", sum(CAST("managerid" as bigint)) as "managerid", sum((CAST(DATEDIFF(ss, '01-01-1970 00:00:00', "createdon") as bigint) * 1000000) + DATEPART(microsecond, "createdon")) as "createdon", sum(CAST("settingsid" as bigint)) as "settingsid", sum(CAST("defaultownergroupid" as bigint)) as "defaultownergroupid", sum(CAST("currentsubscriptionid" as bigint)) as "currentsubscriptionid", sum(CAST("documentparameterid" as bigint)) as "documentparameterid", sum(CAST("financialid" as bigint)) as "financialid", sum(CAST("defaultpersonid" as bigint)) as "defaultpersonid", sum(CAST("marketid" as bigint)) as "marketid", sum((CAST(DATEDIFF(ss, '01-01-1970 00:00:00', "lastmodifiedon") as bigint) * 1000000) + DATEPART(microsecond, "lastmodifiedon")) as "lastmodifiedon", sum(datalength("parentid")) as "parentid", sum(datalength("subdomain")) as "subdomain", sum(datalength("themeid")) as "themeid", sum(CAST("subscriptionbillingid" as bigint)) as "subscriptionbillingid", sum(CAST("orientation" as bigint)) as "orientation", sum(CAST("type" as bigint)) as "type", sum(CAST("status" as bigint)) as "status", sum(datalength("legalname")) as "legalname", sum(datalength("internalnote")) as "internalnote", sum(CAST("istest" as bigint)) as "istest", sum(datalength("sharpspringaccountid")) as "sharpspringaccountid", sum(CAST("defaultleasetype" as bigint)) as "defaultleasetype", sum(CAST("electronicleaseconfigid" as bigint)) as "electronicleaseconfigid", sum((CAST(DATEDIFF(ss, '01-01-1970 00:00:00', "archivedonutc") as bigint) * 1000000) + DATEPART(microsecond, "archivedonutc")) as "archivedonutc", sum(CAST("_sling_loaded_at" as bigint)) as "_sling_loaded_at" from "dbo"."biz_syndicate_tmp"
2024-04-16 11:48:57 DBG MERGE INTO "dbo"."biz_syndicate" tgt
        USING (SELECT * FROM "dbo"."biz_syndicate_tmp") src
        ON (src."id" = tgt."id")
        WHEN MATCHED THEN
                UPDATE SET "name" = src."name", "issharesvalid" = src."issharesvalid", "managerid" = src."managerid", "createdon" = src."createdon", "settingsid" = src."settingsid", "defaultownergroupid" = src."defaultownergroupid", "currentsubscriptionid" = src."currentsubscriptionid", "documentparameterid" = src."documentparameterid", "financialid" = src."financialid", "defaultpersonid" = src."defaultpersonid", "marketid" = src."marketid", "lastmodifiedon" = src."lastmodifiedon", "parentid" = src."parentid", "subdomain" = src."subdomain", "themeid" = src."themeid", "subscriptionbillingid" = src."subscriptionbillingid", "orientation" = src."orientation", "type" = src."type", "status" = src."status", "legalname" = src."legalname", "internalnote" = src."internalnote", "istest" = src."istest", "sharpspringaccountid" = src."sharpspringaccountid", "defaultleasetype" = src."defaultleasetype", "electronicleaseconfigid" = src."electronicleaseconfigid", "archivedonutc" = src."archivedonutc", "_sling_loaded_at" = src."_sling_loaded_at"
        WHEN NOT MATCHED THEN
                INSERT ("id", "name", "issharesvalid", "managerid", "createdon", "settingsid", "defaultownergroupid", "currentsubscriptionid", "documentparameterid", "financialid", "defaultpersonid", "marketid", "lastmodifiedon", "parentid", "subdomain", "themeid", "subscriptionbillingid", "orientation", "type", "status", "legalname", "internalnote", "istest", "sharpspringaccountid", "defaultleasetype", "electronicleaseconfigid", "archivedonutc", "_sling_loaded_at") VALUES (src."id", src."name", src."issharesvalid", src."managerid", src."createdon", src."settingsid", src."defaultownergroupid", src."currentsubscriptionid", src."documentparameterid", src."financialid", src."defaultpersonid", src."marketid", src."lastmodifiedon", src."parentid", src."subdomain", src."themeid", src."subscriptionbillingid", src."orientation", src."type", src."status", src."legalname", src."internalnote", src."istest", src."sharpspringaccountid", src."defaultleasetype", src."electronicleaseconfigid", src."archivedonutc", src."_sling_loaded_at")
2024-04-16 11:48:58 DBG 1 TOTAL INSERTS / UPDATES
2024-04-16 11:48:58 INF inserted 1 rows into "dbo"."biz_syndicate" in 0 secs [3 r/s] [194 B]
2024-04-16 11:48:58 DBG IF OBJECT_ID(N'"dbo"."biz_syndicate_tmp"', N'U') IS NOT NULL DROP TABLE "dbo"."biz_syndicate_tmp"
2024-04-16 11:48:58 DBG table "dbo"."biz_syndicate_tmp" dropped
2024-04-16 11:48:58 DBG closed "sqlserver" connection (conn-sqlserver-hRJ)
2024-04-16 11:48:58 INF execution succeeded

2024-04-16 11:48:58 INF Sling Replication Completed in 1s | magma -> magma_dw | 2 Successes | 1 Failures

fatal:
--- sling_cli.go:418 func1 ---
--- sling_cli.go:476 cliInit ---
--- cli.go:284 CliProcess ---
~ failure running replication (see docs @ https://docs.slingdata.io/sling-cli)
--- sling_logic.go:202 processRun ---

--------------------------- dbo.biz_cpt_deposit_slip ---------------------------
~ execution failed
--- task_run.go:99 func1 ---
~ Could not ReadFromDB
--- task_run.go:505 runDbToDb ---
~ Could not BulkExportFlow
--- task_run_read.go:192 ReadFromDB ---
--- database.go:2450 BulkExportFlow ---
~ dataflow error while waiting for ready state
--- dataflow.go:630 WaitReady ---

--- database.go:2431 func1 ---
--- database.go:767 BulkExportStream ---
~ Error running query
--- database.go:778 StreamRows ---
~ SQL Error for:
select "id", "propertyid", "date", "type" from (
select id, propertyid, date, type from "dbo"."biz_cpt_deposit_slip" where "createdonutc" >= '2024-04-05 03:44:23.086' order by "createdonutc" asc
) t
--- database.go:824 StreamRowsContext ---
mssql: The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified.
flarco commented 5 months ago

Thanks, I'll take a look and optimize the logic.

Could we change the sqlserver.yaml template

No, we can't customize the template (since go is compiled into a binary), but let me see, perhaps having custom templates in the ~/.sling dir to allow overwriting.

For now, can you use a custom SQL (instead of select: [id, propertyid, date, type])? I think that should work:

  dbo.biz_cpt_deposit_slip:
    mode: incremental
    primary_key: [id]
    update_key: createdonutc
    sql: select id, propertyid, date, type, createdonutc from "dbo"."biz_cpt_deposit_slip" where {incremental_where_cond}
morindo commented 5 months ago

Ok great, I'll try that. Great project BTW. Thank you very much.

flarco commented 5 months ago

Logic for this should be better in 1.2.6. Closing.