Skip to content
Closed

Rav4768 #2338

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
448 commits
Select commit Hold shift + click to select a range
e0dff2f
Cast Related Changes (#82)
soma-mondal Mar 20, 2020
97cf397
Snowflake: Date +/- Integer (#79)
soma-mondal Mar 23, 2020
5b8d8ea
RPAD and LPAD hive spark (#81)
deepakDatametica Mar 26, 2020
a845c31
Support for length has been added for snowflake (#83)
sarbjeet805 Mar 26, 2020
d1c7dfa
Format support (#77)
deepakDatametica Mar 27, 2020
880dece
Change comparison logic in PaddingFunctionUtil' (#87)
deepakDatametica Mar 30, 2020
95215cb
support for trim function
sarbjeet805 Mar 31, 2020
2a93a87
Added a case for CHARACTER_LENGTH() so that it is printed as LENGTH()…
harsha-pathak Apr 8, 2020
ca92e40
Groupby issue fix (#93)
deepakDatametica Apr 9, 2020
c14d7aa
MMYY is not supported in BQ (#94)
deepakDatametica Apr 13, 2020
652382a
added IS TRUE and IS NOT TRUE operator support. (#96)
yogeshmuley Apr 22, 2020
9969162
adding check of minus prefix so that negative numbers to be reference…
harsha-pathak Apr 30, 2020
5719f7e
In Clause Sub Query Issue (#98)
soma-mondal May 8, 2020
c9d455e
[RAV-1747]IN/NOT IN not supported in JOIN (#99)
dhirenda-gautam May 25, 2020
60ba432
Rav 1855 (#101)
dhirenda-gautam Jun 5, 2020
2d89fe5
Analytical Function In Group By Where Analytical Function Is Input Of…
soma-mondal Jun 11, 2020
2316d0a
coalesce function (#100)
sarbjeet805 Jun 11, 2020
8c5c15d
Agg Function In Group By Issue (#104)
soma-mondal Jul 8, 2020
692a203
Agg Function In Group By Issue: Adding Group By Check in SqlImplement…
soma-mondal Jul 9, 2020
4a8b02e
Nested Analytical Issue (#106)
soma-mondal Jul 17, 2020
299d0ca
TimestampToDate function conversion (#107)
chavangaurav1 Aug 6, 2020
e916d0c
FormatDateTime function support (#109)
DMgaurav Sep 1, 2020
31e66f7
Merge pull request #89 from datametica/RAV-1501
deepakDatametica Dec 3, 2020
4ed978e
SINGLE_VALUE func in snowflake
Dec 3, 2020
8ec31db
codenarc fixes
adibasak Dec 3, 2020
c1dbf36
RAV-4085: Added IFF support in calcite
vinayujeedm Dec 4, 2020
e920f2c
Merge remote-tracking branch 'origin/master' into RAV-4085
vinayujeedm Dec 7, 2020
54a49c5
RAV-4085: Added IFF support in calcite
vinayujeedm Dec 7, 2020
cf5f6b5
RAV-4085: Added IFF support in calcite (#113)
vinayujeedm Dec 8, 2020
fcfe15a
RAV-3272 | Modifying TD source query using its rel and then Again rel…
harsha-pathak Dec 9, 2020
6847e62
Merge pull request #114 from datametica/RAV-3272
ravikapur Dec 10, 2020
723e54c
Merge pull request #112 from datametica/4060-SINGLE_VALUE-snowflake
deepakDatametica Dec 14, 2020
1d5fbeb
RAV-4241: Added FORMAT support for 'E' & 'd' in calcite
vinayujeedm Dec 14, 2020
bab66dc
Merge remote-tracking branch 'origin/master' into RAV-4241
vinayujeedm Dec 14, 2020
0aeab94
RAV-4241: Added FORMAT support for 'E' & 'd' in calcite
vinayujeedm Dec 14, 2020
13f7328
Resolved review comments for FORMAT support for 'E' & 'd' SnowFlake.
vinayujeedm Dec 14, 2020
501a277
Merge pull request #115 from datametica/RAV-4241
deepakDatametica Dec 15, 2020
f01c287
Added FORMAT_DATE support
vinayujeedm Dec 16, 2020
8cb624c
Merge pull request #117 from datametica/RAV-4307
deepakDatametica Dec 16, 2020
ff6e011
Log function support in snowflake
deepakDatametica Dec 17, 2020
4c0426f
fix for IF() in snowflake
Dec 17, 2020
279c239
Merge pull request #118 from datametica/log_function_snowflake
deepakDatametica Dec 17, 2020
27f32e4
review comments
Dec 17, 2020
45c0998
Merge remote-tracking branch 'origin/master' into snowflake_iff_fixes
Dec 17, 2020
f610bbb
Merge pull request #119 from datametica/snowflake_iff_fixes
deepakDatametica Dec 17, 2020
1ab9884
Interval hour_to_second support for BQ (#116)
soma-mondal Dec 17, 2020
15cf2aa
Interval hour_to_second support for BQ (#120)
soma-mondal Dec 17, 2020
3826dd7
Str to date support and FORMAT support for column
deepakDatametica Dec 17, 2020
cfd8ef5
Fix checkstyle issue
deepakDatametica Dec 17, 2020
5cb5a1a
added round and trunc fuunction support for Snowflake
pratik163 Dec 17, 2020
b54a2d7
Merge branch 'master' of https://github.com/datametica/calcite into R…
pratik163 Dec 17, 2020
168a8b2
Divide_integer support for snowflake.
monusinghyadav Dec 17, 2020
bbc340c
Merge pull request #122 from datametica/Divide_Integer_Support_For_Sn…
deepakDatametica Dec 17, 2020
1b3c0e2
Merge pull request #121 from datametica/str_to_date_fix
deepakDatametica Dec 17, 2020
44f0d3b
Added REGEXP_INSTR support
vinayujeedm Dec 18, 2020
8ecf8cb
Resolved review comment
vinayujeedm Dec 21, 2020
48983f0
Merge pull request #123 from datametica/regexp_instr
deepakDatametica Dec 21, 2020
8cb04cc
added to_timestamp function support for Snowflake
pratik163 Dec 21, 2020
e99076d
Merge branch 'master' of https://github.com/datametica/calcite into R…
pratik163 Dec 21, 2020
50ac27d
added round and truncate function support for snowflake
pratik163 Dec 22, 2020
a153ea4
Support unparse logic for window function in snowflake
deepakDatametica Dec 22, 2020
c711eb3
Added whitespace for window function
deepakDatametica Dec 22, 2020
60d7381
master merge
deepakDatametica Dec 22, 2020
a477d24
added unparse logic for TO_TIMESTAMP
pratik163 Dec 22, 2020
798cd6f
added doc for unparseMathFunction
pratik163 Dec 22, 2020
4bafe6e
Merge pull request #125 from datametica/fix_over_window_snowflake
deepakDatametica Dec 22, 2020
1c26c1e
Merge pull request #124 from datametica/Round_Trunc_Support
deepakDatametica Dec 22, 2020
39222bd
Added variation of Window function in snowflake
deepakDatametica Dec 23, 2020
0442e16
Revert POSITION change from snowflake
deepakDatametica Dec 23, 2020
4c01aa8
resolve merge conflicts from master branch
deepakDatametica Dec 23, 2020
4e43a8f
Merge branch 'master' of https://github.com/datametica/calcite into T…
pratik163 Dec 23, 2020
bc55145
Merge pull request #126 from datametica/fix_over_window_snowflake
deepakDatametica Dec 23, 2020
5d4ae6f
Support DateTimestamp function for snowflake
deepakDatametica Dec 23, 2020
fea9d5a
Added REGEXP_INSTR support
vinayujeedm Dec 23, 2020
21f5f6d
Handle DateTimestamp function for snowflake and bigquery
deepakDatametica Dec 23, 2020
c5af0fa
New file for datetimestamp format util
deepakDatametica Dec 23, 2020
3a08eb9
Added more dateTimestamp functions for Bigquery, Hive, Snowflake
deepakDatametica Dec 23, 2020
009ed4b
support for dayOfYear() in bq,spark,sf,hive
Dec 24, 2020
0ef2150
update unparse logic for TO_TIMESTAMP function
pratik163 Dec 24, 2020
d0d2b83
Merge branch 'master' of https://github.com/datametica/calcite into T…
pratik163 Dec 24, 2020
5ced96c
Merge branch 'master' of https://github.com/datametica/calcite into R…
vinayujeedm Dec 24, 2020
714631c
Added INSTR support
vinayujeedm Dec 24, 2020
a27361b
Window Frame with order by 'column' support for snowflake.
monusinghyadav Dec 24, 2020
e497de6
Added INSTR canonical support.
vinayujeedm Dec 24, 2020
f562522
Added INSTR canonical support.
vinayujeedm Dec 24, 2020
9bb7d2d
TIMESTAMP Support added for Snowflake
rohitgaurDatametica Dec 24, 2020
c1ed39f
Merge pull request #127 from datametica/REGEXP-Support
deepakDatametica Dec 24, 2020
739a3dd
Added test cases for dateTimestamp functions for Bigquery, Hive, Snow…
deepakDatametica Dec 24, 2020
bfe23c2
Merge branches 'master' and 'support_datetime_functions' of https://g…
deepakDatametica Dec 24, 2020
0919c2c
changes in unparseTimestamp
rohitgaurDatametica Dec 24, 2020
9cbe7a0
DAYNUMBER_OF_CALENDAR support
deepakDatametica Dec 28, 2020
b8acf35
DAYNUMBER_OF_CALENDAR support
deepakDatametica Dec 28, 2020
06128b3
added test case for daynumber of calendar
deepakDatametica Dec 28, 2020
f2a3438
updated unparse logic for To_Date
pratik163 Dec 28, 2020
3e10b21
Merge branch 'master' of https://github.com/datametica/calcite into T…
pratik163 Dec 28, 2020
d8cb8fd
Merge branch 'master' of https://github.com/datametica/calcite into W…
monusinghyadav Dec 28, 2020
07f5cdd
Window Frame with order by 'column' support for snowflake.
monusinghyadav Dec 28, 2020
289ed6e
Random function support for SnowflakeSqlDialect
monusinghyadav Dec 29, 2020
c87ca34
Window frame require order by support and Round function support for …
monusinghyadav Dec 29, 2020
e119143
TIMESTAMP ADD/SUB Support for all dialects
rohitgaurDatametica Dec 29, 2020
d06d3c3
Random function support for snowflake
monusinghyadav Dec 29, 2020
4153217
window frame support and round function support for snowflake
monusinghyadav Dec 29, 2020
ea11f65
Window frame require and Round function support for snowflake
monusinghyadav Dec 29, 2020
aab6ea2
Window frame require and Round function support for snowflake
monusinghyadav Dec 29, 2020
780cbf6
Window frame require and Round function support for snowflake
monusinghyadav Dec 29, 2020
5704176
Merge remote-tracking branch 'origin/master' into RAV_4509_TIMESTAMP
rohitgaurDatametica Dec 29, 2020
36bf717
Merge pull request #129 from datametica/Window_frame
deepakDatametica Dec 30, 2020
18bff60
Merge branch 'master' of https://github.com/datametica/calcite into R…
monusinghyadav Dec 30, 2020
755bab6
added support for TIMESTAMP_DIFF and TIME_DIFF
pratik163 Dec 30, 2020
318baa9
Merge branch 'master' of https://github.com/datametica/calcite into T…
pratik163 Dec 30, 2020
16d2c56
Random function support for BQ, Hive, Spark and Snowflake
monusinghyadav Dec 30, 2020
7f9aee1
Merge pull request #130 from datametica/Random_function
deepakDatametica Dec 30, 2020
da7190b
TIMESTAMPINTMUL Support
rohitgaurDatametica Dec 30, 2020
ffa7cd9
TIMESTAMPINTMUL Support added for BigQuery
rohitgaurDatametica Dec 30, 2020
773a9a1
Merge branch 'master' into RAV_4509_TIMESTAMP
rohitgaurDatametica Dec 30, 2020
f83f132
updated unparse logic for TIME_DIFF and TIMESTAMP_ADD
pratik163 Dec 30, 2020
d8cbb00
Merge branch 'master' of https://github.com/datametica/calcite into T…
pratik163 Dec 30, 2020
c87c16e
updated unparse logic for TIME_DIFF
pratik163 Dec 30, 2020
52d6e19
updated unparse logic for TIMESTAMP_ADD
pratik163 Dec 30, 2020
3acd96e
code refactoring
rohitgaurDatametica Dec 30, 2020
5696920
Added support for interval for snowflake
deepakDatametica Dec 31, 2020
c14b80d
Separate class for date time interval
deepakDatametica Dec 31, 2020
913d8f5
Separate class for date time interval
deepakDatametica Dec 31, 2020
b0d2847
code formatting
rohitgaurDatametica Dec 31, 2020
f98e868
support for to_char() and addMonths() in bq,spark,sf,hive
Dec 31, 2020
5185393
Merge remote-tracking branch 'origin/master' into toChar_AddMonths_su…
Dec 31, 2020
38d3502
Merge pull request #128 from datametica/RAV_4509_TIMESTAMP
deepakDatametica Dec 31, 2020
6fd57d9
Merge remote-tracking branch 'origin/master' into toChar_AddMonths_su…
Dec 31, 2020
220c03a
fixes after merge
Dec 31, 2020
314db10
updated dateformat for BigQuery
pratik163 Dec 31, 2020
e3f3b8d
Merge branch 'master' of https://github.com/datametica/calcite into T…
pratik163 Dec 31, 2020
38c7c50
updated return type for TIMESTAMPINTADD and TIMESTAMPINTSUB
pratik163 Dec 31, 2020
6d82981
resolved checkstyle violation
pratik163 Dec 31, 2020
ac184c7
resolved test failures
pratik163 Dec 31, 2020
ac98e16
added SqlFunctions
pratik163 Jan 2, 2021
51173e8
resolved review comments
pratik163 Jan 2, 2021
6a50e1d
resolved review comments
pratik163 Jan 2, 2021
91654b0
Merge pull request #134 from datametica/TO_TIMESTAMP
deepakDatametica Jan 2, 2021
aec2d97
Merge branch 'master' of https://github.com/datametica/calcite into s…
pratik163 Jan 2, 2021
f8eab47
support for add_months(), to_char()
Jan 2, 2021
2dac166
Merge remote-tracking branch 'origin/master' into toChar_AddMonths_su…
Jan 2, 2021
7e1bd1b
build fixes
Jan 2, 2021
6e5863f
resolved codestyle violations
pratik163 Jan 2, 2021
167dfa8
resolved review comments
pratik163 Jan 2, 2021
74f7d7e
Merge pull request #132 from datametica/support_datetime_functions
deepakDatametica Jan 2, 2021
bb53777
added sqlFunction tests
Jan 2, 2021
58a313b
build fixes
Jan 2, 2021
5abab26
Merge remote-tracking branch 'origin/master' into toChar_AddMonths_su…
Jan 2, 2021
c881231
Merge branch 'dayOfYear_support' into toChar_AddMonths_support
Jan 2, 2021
53871d2
BigQuery DateTime Interval handling
deepakDatametica Jan 2, 2021
e992562
support for DOY()
Jan 3, 2021
d9c4ec2
Hive handling for date time interval
deepakDatametica Jan 3, 2021
67a71dc
Spark datetimestamp interval
deepakDatametica Jan 3, 2021
6aaafde
Spark datetimestamp interval
deepakDatametica Jan 3, 2021
1f6c167
support interval month sec
Jan 3, 2021
cf43f9e
Merge branches 'fix_arithmetic_test_cases' and 'master' of https://gi…
deepakDatametica Jan 3, 2021
e23c569
Merge pull request #131 from datametica/toChar_AddMonths_support
deepakDatametica Jan 3, 2021
90d9445
Merge branches 'fix_arithmetic_test_cases' and 'master' of https://gi…
deepakDatametica Jan 4, 2021
9f634dd
Merge branches 'fix_arithmetic_test_cases' and 'master' of https://gi…
deepakDatametica Jan 4, 2021
5318207
DATE_MOD in SqlFunctions
deepakDatametica Jan 4, 2021
f3a1776
DATE_MOD in SqlFunctions and fix ReltoSqlConverterTest
deepakDatametica Jan 4, 2021
1f75eff
added annotation
deepakDatametica Jan 4, 2021
eeabd9e
Fix review comments
deepakDatametica Jan 4, 2021
32c16d5
Merge pull request #135 from datametica/fix_arithmetic_test_cases
deepakDatametica Jan 4, 2021
9be3d14
Add_months refactor and Date_Diff support
deepakDatametica Jan 4, 2021
0bac1ed
Merge pull request #136 from datametica/fix_arithmetic_test_cases
deepakDatametica Jan 4, 2021
d655eb3
Time minus Time handling for Hive and Spark
deepakDatametica Jan 5, 2021
0ca8e83
Merge pull request #137 from datametica/hive_spark_time_minus_time
deepakDatametica Jan 5, 2021
ee09614
added support for DAYNAME in snowflake
rohitgaurDatametica Jan 6, 2021
1b32fec
removed "DAYNAME" and added 'DY' for day types
rohitgaurDatametica Jan 7, 2021
f23d79b
code refactoring
rohitgaurDatametica Jan 7, 2021
6c3bd1e
correcting whitespace in getDayofWeek
rohitgaurDatametica Jan 7, 2021
3a5e6c1
code refactoring
rohitgaurDatametica Jan 8, 2021
8b4d632
to_binary and time_sub handling
deepakDatametica Jan 8, 2021
bdb0853
fix forbidden issues
deepakDatametica Jan 11, 2021
aa38034
cast sqlcall
deepakDatametica Jan 12, 2021
eed6bec
To_char handling for snowflake
deepakDatametica Jan 12, 2021
01df704
strtok added in sqlfunctions
deepakDatametica Jan 12, 2021
8e85f9c
fix review comments
deepakDatametica Jan 13, 2021
178350c
Added NVL Support for Synapse i.e. ISNULL
Jan 13, 2021
e10f385
Rav 4558 Nulls First And Nulls Last Support In MSSql (#139)
Jan 13, 2021
1a1772a
Resolved: Bugs Fixed.
Jan 13, 2021
cf2a647
date_format calcite changes
rohitgaurDatametica Jan 13, 2021
06f785b
Resolved: Bugs Fixed.
Jan 13, 2021
d557205
fix review comments
deepakDatametica Jan 13, 2021
33789b6
Resolved: Bugs Fixed.
Jan 13, 2021
17dbe06
RAV-4499: Unsupported Operations For ADD_MONTHS (#141)
dhirenda-gautam Jan 13, 2021
2d732f7
code refactoring
rohitgaurDatametica Jan 14, 2021
ad5de0f
Resolved: Bugs Fixed.
Jan 14, 2021
b2d6564
Merge pull request #138 from datametica/DAYNAME_support_for_snowflake
deepakDatametica Jan 14, 2021
14c77f9
master merge
deepakDatametica Jan 14, 2021
c62581c
Fix review comments
deepakDatametica Jan 14, 2021
8f90963
Corrected format timestamp
deepakDatametica Jan 14, 2021
684c4ac
strtok with null value
deepakDatametica Jan 14, 2021
6c07515
Merge pull request #142 from datametica/dayformat_fix
deepakDatametica Jan 15, 2021
b79272f
Merge branch 'master' of https://github.com/datametica/calcite into R…
Jan 18, 2021
63a2d80
Resolved: Bugs Fixed.
Jan 18, 2021
c1beba2
RAV-4557: CEIL to CEILING IN MSSQL
Jan 18, 2021
2a48afe
RAV-4557: Formatting Changes
Jan 18, 2021
68a9971
RAV-4557: Formatting Changes
Jan 18, 2021
984a9f5
RAV-4557: Formatting Changes
Jan 18, 2021
1ee6705
Round support for Synapse Added.
Jan 18, 2021
f308fa1
RAV-4445-Trim-Support-For-MSSql
Jan 18, 2021
6d5a243
RAV-4445-Trim-Support-For-MSSql : Format Changes
Jan 18, 2021
6847659
RAV-4445-Trim-Support-For-MSSql : Format Changes
Jan 18, 2021
b9ac4ab
Merge pull request #145 from datametica/RAV-4445-Trim-Support-For-MSSql
deepakDatametica Jan 18, 2021
74f5d7a
LOG Support for Synapse Added.
Jan 18, 2021
8a099ce
Resolved: Bugs Fixed.
Jan 18, 2021
a2a8111
Merge branch 'master' of https://github.com/datametica/calcite into R…
Jan 18, 2021
96c3e10
Resolved: Bugs Fixed.
Jan 18, 2021
362a7a0
Resolved: Bugs Fixed.
Jan 19, 2021
85cadee
Merge branch 'master' of https://github.com/datametica/calcite into R…
Jan 19, 2021
e198cc3
Resolved: Bugs Fixed.
Jan 19, 2021
8210e75
Fixed Merge Conflicts.
Jan 19, 2021
af65111
Merge pull request #144 from datametica/RAV-4557-Ceil-Support-MSSql
deepakDatametica Jan 19, 2021
fb45f89
Resolved: Bugs Fixed.
Jan 19, 2021
a461fa6
Merge branch 'master' of https://github.com/datametica/calcite into R…
Jan 19, 2021
fd01065
Resolved: Bugs Fixed.
Jan 19, 2021
efe40c6
Merge pull request #146 from datametica/RAV-4819-LogSupportForSynapse
deepakDatametica Jan 19, 2021
5bfc301
Resolved: Bugs Fixed.
Jan 19, 2021
5c49cae
Merge branch 'master' of https://github.com/datametica/calcite into R…
Jan 19, 2021
163cebd
Resolved: Bugs Fixed.
Jan 19, 2021
a02a601
Merge branch 'master' of https://github.com/datametica/calcite into R…
Jan 20, 2021
c6902f2
Added Round support for Synapse.
Jan 20, 2021
2bfa0ad
Resolved: Bugs Fixed.
Jan 20, 2021
0a35199
Resolved: Bugs Fixed.
Jan 20, 2021
53b529a
Resolved: Bugs Fixed.
Jan 20, 2021
7c4f359
Resolved: Bugs Fixed.
Jan 20, 2021
27a36c9
Added Round support for Synapse.
Jan 20, 2021
beed7ea
Resolved: Bugs Fixed.
Jan 20, 2021
0bcb71f
Merge pull request #147 from datametica/RAV-4825-RoundFunctionSupport…
deepakDatametica Jan 20, 2021
e57b789
Merge branch 'master' of https://github.com/datametica/calcite into R…
Jan 20, 2021
542bf7a
Resolved: Bugs Fixed.
Jan 21, 2021
717a369
Merge pull request #148 from datametica/RAV-4830-TruncFunctionSupport…
deepakDatametica Jan 22, 2021
8ce7d1f
Merge branch 'master' of https://github.com/datametica/calcite into R…
Jan 22, 2021
e7604c8
Merge pull request #143 from datametica/RAV-4755-NVLSynapseSupport
deepakDatametica Jan 22, 2021
97365a2
Extract support in MsSql
deepakDatametica Jan 28, 2021
78a00ab
supported current_time and current_timestamp
deepakDatametica Jan 28, 2021
6be7f9d
fix review comment
deepakDatametica Jan 28, 2021
2ae13b6
fix review comment
deepakDatametica Jan 28, 2021
4de9858
Added LastDay function unparsing for mssql
pratik163 Jan 28, 2021
093a583
Added LastDay function unparsing for mssql
pratik163 Jan 28, 2021
3d3e9b4
resolved review comments
pratik163 Jan 28, 2021
a345695
Merge pull request #154 from datametica/Last_Day
deepakDatametica Jan 29, 2021
3c605be
resolved master merge conflicts
deepakDatametica Jan 29, 2021
33b8087
Merge pull request #152 from datametica/Extract_Synapsys_support
deepakDatametica Jan 29, 2021
7383f3a
Resolved: Bugs Fixed.
Feb 1, 2021
0184f93
Merge branch 'master' of https://github.com/datametica/calcite into R…
Feb 1, 2021
3cef80a
Merge pull request #159 from datametica/RAV-4830-TruncFunctionSupport…
soma-mondal Feb 1, 2021
d5f57cd
Added the support for HHMISS
RajshriGh Feb 1, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -93,9 +93,17 @@
import static org.apache.calcite.linq4j.tree.ExpressionType.Subtract;
import static org.apache.calcite.linq4j.tree.ExpressionType.UnaryPlus;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.CHR;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.DATETIME_ADD;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.DATETIME_SUB;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.DATE_MOD;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.DAYNAME;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.DAYOCCURRENCE_OF_MONTH;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.DIFFERENCE;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.FORMAT;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.FROM_BASE64;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.IFNULL;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.INSTR;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.ISNULL;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.JSON_DEPTH;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.JSON_KEYS;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.JSON_LENGTH;
Expand All @@ -104,17 +112,35 @@
import static org.apache.calcite.sql.fun.SqlLibraryOperators.JSON_STORAGE_SIZE;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.JSON_TYPE;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.LEFT;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.LPAD;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.MD5;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.MONTHNAME;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.MONTHNUMBER_OF_QUARTER;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.MONTHNUMBER_OF_YEAR;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.QUARTERNUMBER_OF_YEAR;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.REGEXP_REPLACE;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.REPEAT;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.REVERSE;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.RIGHT;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.RPAD;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.SHA1;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.SOUNDEX;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.SPACE;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.TIMESTAMPINTADD;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.TIMESTAMPINTSUB;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.TIMESTAMP_SECONDS;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.TIMESTAMP_TO_DATE;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.TIME_DIFF;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.TIME_SUB;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.TO_BASE64;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.TO_BINARY;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.TO_CHAR;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.TO_VARCHAR;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.TRANSLATE3;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.WEEKNUMBER_OF_CALENDAR;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.WEEKNUMBER_OF_MONTH;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.WEEKNUMBER_OF_YEAR;
import static org.apache.calcite.sql.fun.SqlLibraryOperators.YEARNUMBER_OF_CALENDAR;
import static org.apache.calcite.sql.fun.SqlStdOperatorTable.ABS;
import static org.apache.calcite.sql.fun.SqlStdOperatorTable.ACOS;
import static org.apache.calcite.sql.fun.SqlStdOperatorTable.AND;
Expand Down Expand Up @@ -303,8 +329,7 @@ public class RexImpTable {
defineMethod(REPLACE, BuiltInMethod.REPLACE.method, NullPolicy.STRICT);
defineMethod(TRANSLATE3, BuiltInMethod.TRANSLATE3.method, NullPolicy.STRICT);
defineMethod(CHR, "chr", NullPolicy.STRICT);
defineMethod(CHARACTER_LENGTH, BuiltInMethod.CHAR_LENGTH.method,
NullPolicy.STRICT);
defineMethod(CHARACTER_LENGTH, BuiltInMethod.CHAR_LENGTH.method, NullPolicy.STRICT);
defineMethod(CHAR_LENGTH, BuiltInMethod.CHAR_LENGTH.method,
NullPolicy.STRICT);
defineMethod(CONCAT, BuiltInMethod.STRING_CONCAT.method,
Expand All @@ -317,10 +342,16 @@ public class RexImpTable {
defineMethod(SOUNDEX, BuiltInMethod.SOUNDEX.method, NullPolicy.STRICT);
defineMethod(DIFFERENCE, BuiltInMethod.DIFFERENCE.method, NullPolicy.STRICT);
defineMethod(REVERSE, BuiltInMethod.REVERSE.method, NullPolicy.STRICT);

defineMethod(IFNULL, BuiltInMethod.IFNULL.method, NullPolicy.NONE);
defineMethod(ISNULL, BuiltInMethod.ISNULL.method, NullPolicy.NONE);
defineMethod(RPAD, BuiltInMethod.RPAD.method, NullPolicy.NONE);
defineMethod(LPAD, BuiltInMethod.LPAD.method, NullPolicy.NONE);
defineMethod(FORMAT, BuiltInMethod.FORMAT.method, NullPolicy.ARG0);
defineMethod(TO_VARCHAR, BuiltInMethod.TO_VARCHAR.method, NullPolicy.ARG0);
defineOtherFunctionMethod();
final TrimImplementor trimImplementor = new TrimImplementor();
defineImplementor(TRIM, NullPolicy.STRICT, trimImplementor, false);

defineMethod(DATE_MOD, BuiltInMethod.DATE_MOD.method, NullPolicy.NONE);
// logical
defineBinary(AND, AndAlso, NullPolicy.AND, null);
defineBinary(OR, OrElse, NullPolicy.OR, null);
Expand Down Expand Up @@ -634,6 +665,33 @@ public Expression implement(RexToLixTranslator translator, RexCall call,
});
}

private void defineOtherFunctionMethod() {
defineMethod(WEEKNUMBER_OF_YEAR, BuiltInMethod.WEEKNUMBER_OF_YEAR.method, NullPolicy.NONE);
defineMethod(DAYOCCURRENCE_OF_MONTH, BuiltInMethod.DAYOCCURRENCE_OF_MONTH.method,
NullPolicy.NONE);
defineMethod(MONTHNUMBER_OF_QUARTER, BuiltInMethod.MONTHNUMBER_OF_QUARTER.method,
NullPolicy.NONE);
defineMethod(MONTHNUMBER_OF_YEAR, BuiltInMethod.MONTHNUMBER_OF_YEAR.method, NullPolicy.NONE);
defineMethod(QUARTERNUMBER_OF_YEAR, BuiltInMethod.QUARTERNUMBER_OF_YEAR.method,
NullPolicy.NONE);
defineMethod(WEEKNUMBER_OF_MONTH, BuiltInMethod.WEEKNUMBER_OF_MONTH.method, NullPolicy.NONE);
defineMethod(WEEKNUMBER_OF_CALENDAR, BuiltInMethod.WEEKNUMBER_OF_CALENDAR.method,
NullPolicy.NONE);
defineMethod(YEARNUMBER_OF_CALENDAR, BuiltInMethod.YEARNUMBER_OF_CALENDAR.method,
NullPolicy.NONE);
defineMethod(TIMESTAMP_TO_DATE, BuiltInMethod.TIMESTAMP_TO_DATE.method, NullPolicy.STRICT);
defineMethod(INSTR, BuiltInMethod.INSTR.method, NullPolicy.ARG0);
defineMethod(TO_BINARY, BuiltInMethod.TO_BINARY.method, NullPolicy.NONE);
defineMethod(TIME_SUB, BuiltInMethod.TIME_SUB.method, NullPolicy.NONE);
defineMethod(TO_CHAR, BuiltInMethod.TO_CHAR.method, NullPolicy.ARG0);
defineMethod(TIMESTAMP_SECONDS, BuiltInMethod.TIMESTAMPSECONDS.method, NullPolicy.ARG0);
defineMethod(TIME_DIFF, BuiltInMethod.TIME_DIFF.method, NullPolicy.NONE);
defineMethod(TIMESTAMPINTADD, BuiltInMethod.TIME_DIFF.method, NullPolicy.NONE);
defineMethod(TIMESTAMPINTSUB, BuiltInMethod.TIME_DIFF.method, NullPolicy.NONE);
defineMethod(DATETIME_ADD, BuiltInMethod.DATETIME_ADD.method, NullPolicy.NONE);
defineMethod(DATETIME_SUB, BuiltInMethod.DATETIME_SUB.method, NullPolicy.NONE);
}

private <T> Supplier<T> constructorSupplier(Class<T> klass) {
final Constructor<T> constructor;
try {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@
import org.apache.calcite.rel.core.Minus;
import org.apache.calcite.rel.core.Project;
import org.apache.calcite.rel.core.Sort;
import org.apache.calcite.rel.core.TableFunctionScan;
import org.apache.calcite.rel.core.TableModify;
import org.apache.calcite.rel.core.TableScan;
import org.apache.calcite.rel.core.Uncollect;
Expand All @@ -53,6 +54,7 @@
import org.apache.calcite.rex.RexProgram;
import org.apache.calcite.sql.JoinConditionType;
import org.apache.calcite.sql.JoinType;
import org.apache.calcite.sql.SqlBasicCall;
import org.apache.calcite.sql.SqlCall;
import org.apache.calcite.sql.SqlDelete;
import org.apache.calcite.sql.SqlDialect;
Expand All @@ -66,12 +68,16 @@
import org.apache.calcite.sql.SqlNode;
import org.apache.calcite.sql.SqlNodeList;
import org.apache.calcite.sql.SqlSelect;
import org.apache.calcite.sql.SqlSpecialOperator;
import org.apache.calcite.sql.SqlUpdate;
import org.apache.calcite.sql.SqlUtil;
import org.apache.calcite.sql.fun.SqlCollectionTableOperator;
import org.apache.calcite.sql.fun.SqlRowOperator;
import org.apache.calcite.sql.fun.SqlSingleValueAggFunction;
import org.apache.calcite.sql.fun.SqlStdOperatorTable;
import org.apache.calcite.sql.parser.SqlParserPos;
import org.apache.calcite.sql.type.SqlTypeName;
import org.apache.calcite.sql.validate.SqlModality;
import org.apache.calcite.sql.validate.SqlValidatorUtil;
import org.apache.calcite.util.ImmutableBitSet;
import org.apache.calcite.util.Pair;
Expand All @@ -88,6 +94,7 @@
import java.util.ArrayDeque;
import java.util.ArrayList;
import java.util.Deque;
import java.util.HashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Locale;
Expand Down Expand Up @@ -228,8 +235,15 @@ public Result visit(Project e) {
final List<SqlNode> selectList = new ArrayList<>();
for (RexNode ref : e.getChildExps()) {
SqlNode sqlExpr = builder.context.toSql(null, ref);
if (SqlUtil.isNullLiteral(sqlExpr, false)) {
sqlExpr = castNullType(sqlExpr, e.getRowType().getFieldList().get(selectList.size()));
RelDataTypeField targetField = e.getRowType().getFieldList().get(selectList.size());

if (SqlKind.SINGLE_VALUE == sqlExpr.getKind()) {
sqlExpr = dialect.rewriteSingleValueExpr(sqlExpr);
}

if (SqlUtil.isNullLiteral(sqlExpr, false)
&& targetField.getType().getSqlTypeName() != SqlTypeName.NULL) {
sqlExpr = castNullType(sqlExpr, targetField);
}
addSelect(selectList, sqlExpr, e.getRowType());
}
Expand Down Expand Up @@ -351,11 +365,22 @@ private List<SqlNode> generateGroupList(Builder builder,

final List<SqlNode> groupKeys = new ArrayList<>();
for (int key : groupList) {
final SqlNode field = builder.context.field(key);
boolean isGroupByAlias = dialect.getConformance().isGroupByAlias();
if (builder.context.field(key).getKind() == SqlKind.LITERAL
&& dialect.getConformance().isGroupByOrdinal()) {
isGroupByAlias = false;
} /*else if (isGroupByAlias) {
List<SqlIdentifier> identifierList = new ArrayList<>();
SqlNode node = builder.context.field(key);
String alias = builder.context.field(key, true).toString();
extractSqlIdentifiers(identifierList, node);
isGroupByAlias = !checkIfAliasMatchesIdentifier(identifierList, alias);
}*/
SqlNode field = builder.context.field(key, isGroupByAlias);
groupKeys.add(field);
}
for (int key : sortedGroupList) {
final SqlNode field = builder.context.field(key);
final SqlNode field = builder.context.field(key, false);
addSelect(selectList, field, aggregate.getRowType());
}
switch (aggregate.getGroupType()) {
Expand All @@ -382,6 +407,42 @@ private List<SqlNode> generateGroupList(Builder builder,
}
}

/*private boolean checkIfAliasMatchesIdentifier(List<SqlIdentifier> identifierList, String alias)
{
for (SqlIdentifier node : identifierList) {
if (node.toString().equalsIgnoreCase(alias)) {
return true;
}
}
return false;
}*/

/*private void extractSqlIdentifiers(List<SqlIdentifier> identifierList, SqlNode node) {
if (node instanceof SqlIdentifier) {
identifierList.add((SqlIdentifier) node);
} else if (node instanceof SqlCase) {
SqlCase caseNode = (SqlCase) node;
SqlNode exprNode = caseNode.getValueOperand();
SqlNodeList whenList = caseNode.getWhenOperands();
SqlNodeList thenList = caseNode.getThenOperands();
SqlNode elseNode = caseNode.getElseOperand();
if (null != exprNode) {
extractSqlIdentifiers(identifierList, exprNode);
}
whenList.forEach(whenNode ->
extractSqlIdentifiers(identifierList, whenNode));
thenList.forEach(thenNode ->
extractSqlIdentifiers(identifierList, thenNode));
if (null != elseNode) {
extractSqlIdentifiers(identifierList, elseNode);
}
} else if (node instanceof SqlBasicCall) {
List<SqlNode> nodeList = Arrays.asList(((SqlBasicCall) node).operands);
nodeList.forEach(sqlNode ->
extractSqlIdentifiers(identifierList, sqlNode));
}
}*/

private SqlNode groupItem(List<SqlNode> groupKeys,
ImmutableBitSet groupSet, ImmutableBitSet wholeGroupSet) {
final List<SqlNode> nodes = groupSet.asList().stream()
Expand Down Expand Up @@ -627,6 +688,38 @@ public Result visit(Sort e) {
return x;
}

public Result visit(TableFunctionScan e) {
List<RelDataTypeField> fieldList = e.getRowType().getFieldList();
if (fieldList == null || fieldList.size() > 1) {
throw new RuntimeException("Table function supports only one argument");
}
final List<SqlNode> inputSqlNodes = new ArrayList<>();
final int inputSize = e.getInputs().size();
for (int i = 0; i < inputSize; i++) {
Result child = visitChild(i, e.getInput(i));
inputSqlNodes.add(child.asStatement());
}
final Context context = tableFunctionScanContext(inputSqlNodes);
SqlNode callNode = context.toSql(null, e.getCall());
// Convert to table function call, "TABLE($function_name(xxx))"
SqlSpecialOperator collectionTable = new SqlCollectionTableOperator("TABLE",
SqlModality.RELATION, e.getRowType().getFieldNames().get(0));
SqlNode tableCall = new SqlBasicCall(
collectionTable,
new SqlNode[]{callNode},
SqlParserPos.ZERO);
SqlNode select = new SqlSelect(
SqlParserPos.ZERO, null, null, tableCall,
null, null, null, null, null, null, null);
Map<String, RelDataType> aliasesMap = new HashMap<>();
RelDataTypeField relDataTypeField = fieldList.get(0);
aliasesMap.put(relDataTypeField.getName(), e.getRowType());
Result x = new Result(select,
ImmutableList.of(Clause.SELECT),
relDataTypeField.getName(), e.getRowType(), aliasesMap);
return x;
}

Result offsetFetch(Sort e, Result x) {
if (e.fetch != null) {
final Builder builder = x.builder(e, Clause.FETCH);
Expand Down
Loading