connector-plugin-sdk
connector-plugin-sdk copied to clipboard
Overloaded date functions cannot be routed to the corresponding function logic as expected
About You: Name: Dechao Hu Company: Apache Doris
Your question:
As shown below, I implemented DATETRUNC in the dialect file to receive the start_of_week input:
<date-function name='DATETRUNC' return-type='datetime'>
<formula part='year'>ADDDATE( DATE_FORMAT( %2, '%Y-01-01 00:00:00' ), INTERVAL 0 SECOND )</formula>
<formula part='quarter'>ADDDATE( CONCAT( DATE_FORMAT( %2, '%Y-' ), (3*(QUARTER(%2)-1)+1), '-01 00:00:00' ), INTERVAL 0 SECOND )</formula>
<formula part='month'>ADDDATE( DATE_FORMAT( %2, '%Y-%m-01 00:00:00' ), INTERVAL 0 SECOND )</formula>
<formula part='dayofyear'>ADDDATE( DATE_FORMAT( %2, '%Y-%m-%d 00:00:00' ), INTERVAL 0 SECOND )</formula>
<formula part='day'>ADDDATE( DATE_FORMAT( %2, '%Y-%m-%d 00:00:00' ), INTERVAL 0 SECOND )</formula>
<formula part='weekday'>ADDDATE( DATE_FORMAT( %2, '%Y-%m-%d 00:00:00' ), INTERVAL 0 SECOND )</formula>
<formula part='week'>aDDDATE(DATE_FORMAT( %2, '%Y-%m-%d 00:00:00' ), INTERVAL (-DAYOFWEEK(%2) + 1) DAY)</formula>
<formula part='hour'>ADDDATE( DATE_FORMAT( %2, '%Y-%m-%d %H:00:00' ), INTERVAL 0 SECOND )</formula>
<formula part='minute'>ADDDATE( DATE_FORMAT( %2, '%Y-%m-%d %H:%i:00' ), INTERVAL 0 SECOND )</formula>
<formula part='second'>ADDDATE( DATE_FORMAT( %2, '%Y-%m-%d %H:%i:%s' ), INTERVAL 0 SECOND )</formula>
<argument type='localstr' />
<argument type='datetime' />
</date-function>
<date-function name='DATETRUNC' return-type='datetime'>
<formula part='week'>
CASE
WHEN %3 = 0 THEN ADDdATE(DATE_FORMAT(%2, '%Y-%m-%d 00:00:00'), INTERVAL - ((DAYOFWEEK(%2) + 6) % 7) DAY)
WHEN %3 = 1 THEN ADDdATE(DATE_FORMAT(%2, '%Y-%m-%d 00:00:00'), INTERVAL - ((DAYOFWEEK(%2) + 5) % 7) DAY)
ELSE ADDdATE(DATE_FORMAT(%2, '%Y-%m-%d 00:00:00'), INTERVAL - ((DAYOFWEEK(%2) + 5) % 7) DAY)
END
</formula>
<argument type='localstr' />
<argument type='datetime' />
<argument type='localstr' />
</date-function>
i try to modify <start-of-week-offset value='***' />, but not work.