Skip to content

Commit 255217f

Browse files
author
Jonny Dixon
committed
Update to date handling
1 parent 9f0f0b9 commit 255217f

3 files changed

Lines changed: 55 additions & 1 deletion

File tree

dremio-sybasearp-plugin.jar

413 Bytes
Binary file not shown.

src/main/java/com/dremio/exec/store/jdbc/dialect/SybaseDialect.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import org.apache.calcite.sql.SqlNodeList;
1414
import org.apache.calcite.sql.SqlWriter;
1515
import org.apache.calcite.sql.parser.SqlParserPos;
16+
import org.apache.calcite.sql.SqlAbstractDateTimeLiteral;
1617
import com.dremio.exec.store.jdbc.dialect.arp.ArpDialect;
1718
import com.dremio.common.expression.CompleteType;
1819

@@ -58,6 +59,12 @@ public boolean supportsLiteral(CompleteType type) {
5859
return super.supportsLiteral(type);
5960
}
6061

62+
@Override
63+
public void unparseDateTimeLiteral(SqlWriter writer,
64+
SqlAbstractDateTimeLiteral literal, int leftPrec, int rightPrec) {
65+
writer.literal("'" + literal.toFormattedString() + "'");
66+
}
67+
6168
@Override
6269
public void unparseCall(final SqlWriter writer, final SqlCall call, final int leftPrec, final int rightPrec) {
6370
// Transform SqlSelect nodes that have a fetch node to be SqlSelect nodes with a TOP and no fetch.

src/main/resources/arp/implementation/sybase-arp.yaml

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ data_types:
4040
name: "TIMESTAMP"
4141
dremio:
4242
name: "timestamp"
43+
default_cast_spec: true
4344
- source:
4445
name: "INT"
4546
dremio:
@@ -89,7 +90,7 @@ data_types:
8990
- source:
9091
name: "DATE"
9192
dremio:
92-
name: "timestamp"
93+
name: "date"
9394
- source:
9495
name: "TIME"
9596
dremio:
@@ -341,6 +342,18 @@ expressions:
341342
- "varchar"
342343
return: "integer"
343344
rewrite: "cast(cast({0} as float) as int)"
345+
- args:
346+
- "varchar"
347+
return: "date"
348+
rewrite: "cast({0} as date)"
349+
- args:
350+
- "varchar"
351+
return: "timestamp"
352+
rewrite: "cast({0} as timestamp)"
353+
- args:
354+
- "varchar"
355+
return: "time"
356+
rewrite: "cast({0} as time)"
344357
- names:
345358
- "trim"
346359
signatures:
@@ -2630,6 +2643,7 @@ expressions:
26302643
- "varchar"
26312644
- "date"
26322645
return: "boolean"
2646+
rewrite: "cast({0} as date) = {1}"
26332647
- args:
26342648
- "varchar"
26352649
- "time"
@@ -2642,122 +2656,149 @@ expressions:
26422656
- "date"
26432657
- "varchar"
26442658
return: "boolean"
2659+
rewrite: "{0} = cast({1} as date)"
26452660
- args:
26462661
- "timestamp"
26472662
- "varchar"
26482663
return: "boolean"
2664+
rewrite: "cast({0} as timestamp) = {1}"
26492665
- args:
26502666
- "time"
26512667
- "varchar"
26522668
return: "boolean"
2669+
rewrite: "{0} = cast({1} as time)"
26532670
- names:
26542671
- ">"
26552672
signatures:
26562673
- args:
26572674
- "varchar"
26582675
- "date"
26592676
return: "boolean"
2677+
rewrite: "cast({0} as date) > {1}"
26602678
- args:
26612679
- "varchar"
26622680
- "time"
26632681
return: "boolean"
2682+
rewrite: "cast({0} as time) > {1}"
26642683
- args:
26652684
- "varchar"
26662685
- "timestamp"
26672686
return: "boolean"
2687+
rewrite: "cast({0} as timestamp) > {1}"
26682688
- args:
26692689
- "date"
26702690
- "varchar"
26712691
return: "boolean"
2692+
rewrite: "{0} > cast({1} as date)"
26722693
- args:
26732694
- "timestamp"
26742695
- "varchar"
26752696
return: "boolean"
2697+
rewrite: "{0} > cast({1} as timestamp)"
26762698
- args:
26772699
- "time"
26782700
- "varchar"
26792701
return: "boolean"
2702+
rewrite: "{0} > cast({1} as time)"
26802703
- names:
26812704
- ">="
26822705
signatures:
26832706
- args:
26842707
- "varchar"
26852708
- "date"
26862709
return: "boolean"
2710+
rewrite: "cast({0} as date) >= {1}"
26872711
- args:
26882712
- "varchar"
26892713
- "time"
26902714
return: "boolean"
2715+
rewrite: "cast({0} as time) >= {1}"
26912716
- args:
26922717
- "varchar"
26932718
- "timestamp"
26942719
return: "boolean"
2720+
rewrite: "cast({0} as timestamp) >= {1}"
26952721
- args:
26962722
- "date"
26972723
- "varchar"
26982724
return: "boolean"
2725+
rewrite: "{0} >= cast({1} as date)"
26992726
- args:
27002727
- "timestamp"
27012728
- "varchar"
27022729
return: "boolean"
2730+
rewrite: "{0} >= cast({1} as timestamp)"
27032731
- args:
27042732
- "time"
27052733
- "varchar"
27062734
return: "boolean"
2735+
rewrite: "{0} >= cast({1} as time)"
27072736
- names:
27082737
- "<"
27092738
signatures:
27102739
- args:
27112740
- "varchar"
27122741
- "date"
27132742
return: "boolean"
2743+
rewrite: "cast({0} as date) < {1}"
27142744
- args:
27152745
- "varchar"
27162746
- "time"
27172747
return: "boolean"
2748+
rewrite: "cast({0} as time) < {1}"
27182749
- args:
27192750
- "varchar"
27202751
- "timestamp"
27212752
return: "boolean"
2753+
rewrite: "cast({0} as timestamp) < {1}"
27222754
- args:
27232755
- "date"
27242756
- "varchar"
27252757
return: "boolean"
2758+
rewrite: "{0} < cast({1} as date)"
27262759
- args:
27272760
- "timestamp"
27282761
- "varchar"
27292762
return: "boolean"
2763+
rewrite: "{0} < cast({1} as timestamp)"
27302764
- args:
27312765
- "time"
27322766
- "varchar"
27332767
return: "boolean"
2768+
rewrite: "{0} < cast({1} as time)"
27342769
- names:
27352770
- "<="
27362771
signatures:
27372772
- args:
27382773
- "varchar"
27392774
- "date"
27402775
return: "boolean"
2776+
rewrite: "cast({0} as date) <= {1}"
27412777
- args:
27422778
- "varchar"
27432779
- "time"
27442780
return: "boolean"
2781+
rewrite: "cast({0} as time) <= {1}"
27452782
- args:
27462783
- "varchar"
27472784
- "timestamp"
27482785
return: "boolean"
2786+
rewrite: "cast({0} as timestamp) <= {1}"
27492787
- args:
27502788
- "date"
27512789
- "varchar"
27522790
return: "boolean"
2791+
rewrite: "{0} <= cast({1} as date)"
27532792
- args:
27542793
- "timestamp"
27552794
- "varchar"
27562795
return: "boolean"
2796+
rewrite: "{0} <= cast({1} as timestamp)"
27572797
- args:
27582798
- "time"
27592799
- "varchar"
27602800
return: "boolean"
2801+
rewrite: "{0} <= cast({1} as time)"
27612802
- names:
27622803
- "!="
27632804
- "<>"
@@ -2766,26 +2807,32 @@ expressions:
27662807
- "varchar"
27672808
- "date"
27682809
return: "boolean"
2810+
rewrite: "cast({0} as date) != {1}"
27692811
- args:
27702812
- "varchar"
27712813
- "time"
27722814
return: "boolean"
2815+
rewrite: "cast({0} as time) != {1}"
27732816
- args:
27742817
- "varchar"
27752818
- "timestamp"
27762819
return: "boolean"
2820+
rewrite: "cast({0} as timestamp) != {1}"
27772821
- args:
27782822
- "date"
27792823
- "varchar"
27802824
return: "boolean"
2825+
rewrite: "{0} != cast({1} as date)"
27812826
- args:
27822827
- "timestamp"
27832828
- "varchar"
27842829
return: "boolean"
2830+
rewrite: "{0} != cast({1} as timestamp)"
27852831
- args:
27862832
- "time"
27872833
- "varchar"
27882834
return: "boolean"
2835+
rewrite: "{0} != cast({1} as time)"
27892836
- names:
27902837
- "like"
27912838
signatures:

0 commit comments

Comments
 (0)