Skip to content

Commit e42aa0d

Browse files
authored
Add functions for date type in the TACO (#5) (#91)
* Added fixes for some date/time functions * Added functions for date agg and operations --------- Signed-off-by: Guian Gumpac <[email protected]>
1 parent bc04675 commit e42aa0d

File tree

2 files changed

+78
-5
lines changed

2 files changed

+78
-5
lines changed

bi-connectors/TableauConnector/src/dialect.tdd

Lines changed: 75 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,11 @@
8787
<argument type='date' />
8888
<argument type='datetime' />
8989
</function>
90+
<function group='operator' name='==' return-type='bool'>
91+
<formula>(%1 = %2)</formula>
92+
<argument type='date' />
93+
<argument type='date' />
94+
</function>
9095
<function group='operator' name='!=' return-type='bool'>
9196
<formula>(%1 AND NOT %2 OR NOT %1 AND %2)</formula>
9297
<argument type='bool' />
@@ -127,6 +132,11 @@
127132
<argument type='datetime' />
128133
<argument type='date' />
129134
</function>
135+
<function group='operator' name='!=' return-type='bool'>
136+
<formula>(%1 &lt;&gt; %2)</formula>
137+
<argument type='date' />
138+
<argument type='date' />
139+
</function>
130140
<function group='operator' name='&gt;' return-type='bool'>
131141
<formula>(%1 &gt; CAST(DATE_FORMAT(%2, '%Y-%m-%d 00:00:00') AS TIMESTAMP))</formula>
132142
<argument type='datetime' />
@@ -137,6 +147,11 @@
137147
<argument type='date' />
138148
<argument type='datetime' />
139149
</function>
150+
<function group='operator' name='&gt;' return-type='bool'>
151+
<formula>(%1 &gt; %2)</formula>
152+
<argument type='date' />
153+
<argument type='date' />
154+
</function>
140155
<function group='operator' name='&gt;=' return-type='bool'>
141156
<formula>(%1 &gt;= CAST(DATE_FORMAT(%2, '%Y-%m-%d 00:00:00') AS TIMESTAMP))</formula>
142157
<argument type='datetime' />
@@ -147,6 +162,11 @@
147162
<argument type='date' />
148163
<argument type='datetime' />
149164
</function>
165+
<function group='operator' name='&gt;=' return-type='bool'>
166+
<formula>(%1 &gt;= %2)</formula>
167+
<argument type='date' />
168+
<argument type='date' />
169+
</function>
150170
<function group='operator' name='&lt;' return-type='bool'>
151171
<formula>(%1 &lt; CAST(DATE_FORMAT(%2, '%Y-%m-%d 00:00:00') AS TIMESTAMP))</formula>
152172
<argument type='datetime' />
@@ -157,6 +177,11 @@
157177
<argument type='date' />
158178
<argument type='datetime' />
159179
</function>
180+
<function group='operator' name='&lt;' return-type='bool'>
181+
<formula>(%1 &lt; %2)</formula>
182+
<argument type='date' />
183+
<argument type='date' />
184+
</function>
160185
<function group='operator' name='&lt;=' return-type='bool'>
161186
<formula>(%1 &lt;= CAST(DATE_FORMAT(%2, '%Y-%m-%d 00:00:00') AS TIMESTAMP))</formula>
162187
<argument type='datetime' />
@@ -167,12 +192,28 @@
167192
<argument type='date' />
168193
<argument type='datetime' />
169194
</function>
195+
<function group='operator' name='&lt;=' return-type='bool'>
196+
<formula>(%1 &lt;= %2)</formula>
197+
<argument type='date' />
198+
<argument type='date' />
199+
</function>
170200
<function group='operator' name='+' return-type='datetime'>
171201
<!-- 86400 as it represents seconds in a day -->
172202
<formula>DATE_ADD(%1, INTERVAL CAST((86400 * %2) AS INT) SECOND)</formula>
173203
<argument type='datetime' />
174204
<argument type='real' />
175205
</function>
206+
<function group='operator' name='+' return-type='datetime'>
207+
<formula>DATE_ADD(%1, INTERVAL %2 DAY)</formula>
208+
<argument type='date' />
209+
<argument type='int' />
210+
</function>
211+
<function group='operator' name='+' return-type='datetime'>
212+
<!-- 86400 as it represents seconds in a day -->
213+
<formula>DATE_ADD(%1, INTERVAL CAST((86400 * %2) AS INT) SECOND)</formula>
214+
<argument type='date' />
215+
<argument type='real' />
216+
</function>
176217
<function group='operator' name='-' return-type='int'>
177218
<formula>(%1 * -1)</formula>
178219
<argument type='int' />
@@ -189,13 +230,13 @@
189230
</function>
190231
<function group='operator' name='-' return-type='real'>
191232
<!-- 86400 as it represents seconds in a day -->
192-
<formula>((TO_DAYS(%1) - TO_DAYS(CAST(DATE_FORMAT(%2, '%Y-%m-%d 00:00:00') AS TIMESTAMP))) + ((TIME_TO_SEC(%1) - TIME_TO_SEC(CAST(DATE_FORMAT(%2, '%Y-%m-%d 00:00:00') AS TIMESTAMP))) / 86400.0))</formula>
233+
<formula>(unix_timestamp(%1) - unix_timestamp(%2)) / 86400</formula>
193234
<argument type='datetime' />
194235
<argument type='date' />
195236
</function>
196237
<function group='operator' name='-' return-type='real'>
197238
<!-- 86400 as it represents seconds in a day -->
198-
<formula>((TO_DAYS(CAST(DATE_FORMAT(%1, '%Y-%m-%d 00:00:00') AS TIMESTAMP))) - TO_DAYS(%1) + ((TIME_TO_SEC(CAST(DATE_FORMAT(%1, '%Y-%m-%d 00:00:00') AS TIMESTAMP)) - TIME_TO_SEC(%2)) / 86400.0))</formula>
239+
<formula>(unix_timestamp(%1) - unix_timestamp(%2)) / 86400</formula>
199240
<argument type='date' />
200241
<argument type='datetime' />
201242
</function>
@@ -205,6 +246,22 @@
205246
<argument type='datetime' />
206247
<argument type='real' />
207248
</function>
249+
<function group='operator' name='-' return-type='datetime'>
250+
<formula>DATE_SUB(%1, INTERVAL %2 DAY)</formula>
251+
<argument type='date' />
252+
<argument type='int' />
253+
</function>
254+
<function group='operator' name='-' return-type='datetime'>
255+
<!-- 86400 as it represents seconds in a day -->
256+
<formula>DATE_SUB(%1, INTERVAL CAST((86400 * %2) AS INT) SECOND)</formula>
257+
<argument type='date' />
258+
<argument type='real' />
259+
</function>
260+
<function group='operator' name='-' return-type='real'>
261+
<formula>TO_DAYS(%1) - TO_DAYS(%2)</formula>
262+
<argument type='date' />
263+
<argument type='date' />
264+
</function>
208265
<function group='operator' name='/' return-type='real'>
209266
<formula>CAST(%1 AS DOUBLE) / %2</formula>
210267
<argument type='int' />
@@ -262,6 +319,14 @@
262319
<argument type='datetime' />
263320
<argument type='datetime' />
264321
</function>
322+
<function group='numeric' name='MAX' return-type='date'>
323+
<formula>CASE WHEN ISNULL(%1) THEN NULL
324+
WHEN ISNULL(%2) THEN NULL
325+
WHEN %1 &gt; %2 THEN %1
326+
ELSE %2 END</formula>
327+
<argument type='date' />
328+
<argument type='date' />
329+
</function>
265330
<function group='numeric' name='MAX' return-type='str'>
266331
<formula>CASE WHEN ISNULL(%1) THEN NULL
267332
WHEN ISNULL(%2) THEN NULL
@@ -294,6 +359,14 @@
294359
<argument type='datetime' />
295360
<argument type='datetime' />
296361
</function>
362+
<function group='numeric' name='MIN' return-type='date'>
363+
<formula>CASE WHEN ISNULL(%1) THEN NULL
364+
WHEN ISNULL(%2) THEN NULL
365+
WHEN %1 &lt; %2 THEN %1
366+
ELSE %2 END</formula>
367+
<argument type='date' />
368+
<argument type='date' />
369+
</function>
297370
<function group='numeric' name='MIN' return-type='str'>
298371
<formula>CASE WHEN ISNULL(%1) THEN NULL
299372
WHEN ISNULL(%2) THEN NULL

bi-connectors/TableauConnector/src/manifest.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
<connector-plugin class='opensearch_jdbc' superclass='jdbc' plugin-version='2.0.0.0' name='OpenSearch' version='18.1' min-version-tableau='2021.1'>
44
<vendor-information>
5-
<company name="OpenSearch Project"/>
6-
<support-link url="https://forum.opensearch.org/"/>
5+
<company name="OpenSearch Project"/>
6+
<support-link url="https://forum.opensearch.org/"/>
77
</vendor-information>
88
<connection-customization class="opensearch_jdbc" enabled="true" version="10.0">
99
<vendor name="OpenSearch Project"/>
@@ -26,7 +26,7 @@
2626
<customization name="CAP_SUPPORTS_SPLIT_FROM_LEFT" value="yes"/>
2727
<customization name="CAP_SUPPORTS_SPLIT_FROM_RIGHT" value="yes"/>
2828
<customization name="CAP_QUERY_ALLOW_PARTIAL_AGGREGATION" value="no"/>
29-
<customization name="CAP_QUERY_TIME_REQUIRES_CAST" value="yes"/>
29+
<customization name="CAP_QUERY_TIME_REQUIRES_CAST" value="no"/>
3030
<customization name="CAP_JDBC_METADATA_USE_RESULTSET_FOR_TABLE" value="yes"/>
3131
<customization name="CAP_JDBC_METADATA_GET_INDEX_INFO" value="no"/>
3232
<customization name="CAP_JDBC_METADATA_IGNORE_NULLABILITY" value="yes"/>

0 commit comments

Comments
 (0)