From d7385d1c77fc534344934dad61a5cb995e46bd73 Mon Sep 17 00:00:00 2001 From: Chris Cranford Date: Thu, 18 Apr 2024 13:26:02 -0400 Subject: [PATCH] DBZ-7788 Support with clause in MariaDB compound statements --- .../parser/mariadb/generated/MariaDBParser.g4 | 1 + .../mariadb/examples/fast/ddl_create.sql | 90 +++++++++++++++++++ 2 files changed, 91 insertions(+) diff --git a/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mariadb/generated/MariaDBParser.g4 b/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mariadb/generated/MariaDBParser.g4 index 8cfc8c871..9fc1aa517 100644 --- a/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mariadb/generated/MariaDBParser.g4 +++ b/debezium-ddl-parser/src/main/antlr4/io/debezium/ddl/parser/mariadb/generated/MariaDBParser.g4 @@ -170,6 +170,7 @@ compoundStatement | iterateStatement | returnStatement | cursorStatement + | withClause dmlStatement ; administrationStatement diff --git a/debezium-ddl-parser/src/test/resources/mariadb/examples/fast/ddl_create.sql b/debezium-ddl-parser/src/test/resources/mariadb/examples/fast/ddl_create.sql index ce422a842..2ad33fe31 100644 --- a/debezium-ddl-parser/src/test/resources/mariadb/examples/fast/ddl_create.sql +++ b/debezium-ddl-parser/src/test/resources/mariadb/examples/fast/ddl_create.sql @@ -546,6 +546,96 @@ END IF; END #end #begin +-- delimiter // +CREATE DEFINER=`reportwriter`@`%` PROCEDURE `sp_ds_DAL_TX_Impoundment`(IN pDateFrom datetime, IN pDateTo datetime) +BEGIN + + SET @goliveDate = '2023-05-02 02:00:00'; + set @pRegion = 'DAL-TX'; +-- set @pDateFrom = '2023-02-01 00:00:00'; +-- set @pDateTo = '2023-03-10 00:00:00'; + set @pDateFrom = pDateFrom; + set @pDateTo = pDateTo; + + set @contractAmount = 21.03; + +with +Temp1 as +( + select l.code as lotCode + , fi.Id AS FeeItemID + , fi.unitBillingPrice as billingPrice + , eq.equipmentClass + , a.customerCode + , v.impoundStatus + , tc.companyCode AS impoundCompany + , b.companyCode AS towOperator + , v.id AS vehicleId + , re.reasoncode + , v.towReferenceNumber + + , fn_CalculateTimeZoneOffset(regionCode, v.clearedDate, 'DISPLAY') AS towDate + , fn_CalculateTimeZoneOffset(regionCode, v.releaseDate, 'DISPLAY') AS releaseDate + , fn_CalculateTimeZoneOffset(regionCode, fi.createdDate, 'DISPLAY') AS feeDate + + , f.code + , fi.totalBillingPricePretax + + from ims_vehicle v + join ref_region r + on v.regionId = r.regionId + + INNER JOIN ims_fee_event fe ON v.id = fe.vehicleId + INNER JOIN ims_fee_item fi ON fe.id = fi.feeEventId + INNER JOIN ims_fee f ON fi.feeId = f.id + INNER JOIN ims_fee_category fc ON f.feeCategoryEnumCode = fc.enumcode + + INNER JOIN ref_customer a ON v.accountId = a.customerId + INNER JOIN ref_reason re ON v.reasonId = re.reasonId + INNER JOIN ref_tow_company tc ON v.currentImpoundOperatorId = tc.towCompanyId + + JOIN ref_tow_company b ON v.towOperatorId = b.towCompanyId + left join ref_lot l on v.currentLotId = l.id + join ref_equipment eq + on v.equipmentId = eq.id + + where r.regionCode = @pRegion + and v.releaseDate >= @pDateFrom + and v.releaseDate < @pDateTo + and v.clearedDate >= @goliveDate + and b.companyCode != 'ART-DAL-TX' + and v.impoundStatus = 'RELEASED' +) + + select lotCode + , Temp1.vehicleId as "Vehicle ID" + , towReferenceNumber as "Tow Reference Number" + , equipmentClass as "Class" + , impoundStatus as "Status" + , customerCode as "Customer" + , impoundCompany as "Impound Company" + , towOperator as "Tow Operator" + , towDate as "Tow Date" + , releaseDate as "Release Date" + , billingPrice as "Auto Pound Authorized Fee" + + , billingPrice - @contractAmount as "rev threshold" + +-- ,DATEDIFF(s.timeTo, s.timeFrom) as "Storage Days" + , null as "Storage Days" + , null as timeFrom + , null as timeTo + , billingPrice as "Authorized Impoundment Fee" + + , (billingPrice - @contractAmount)/2 + @contractAmount as "rev share amount" + from Temp1 + + where code in ('ImpoundmentFee') + and lotCode like '%PEAKA%'; + +END; -- //-- delimiter ; +#end +#begin -- Create Role create role 'RL_COMPLIANCE_NSA'; create role if not exists 'RL_COMPLIANCE_NSA';