Skip to content

Conversation

@Yury-Fridlyand
Copy link
Collaborator

Signed-off-by: Yury-Fridlyand yuryf@bitquilltech.com

Description

I referred to MySQL docs and tried to reproduce MySQL v.8.0.30 behavior as a reference.

Please, see team review and discussion on Bit-Quill#132.

New functions: ADDTIME/SUBTIME.

Changes

Adds or subtracts time to/from date and returns the result.

Signature

(TIME, TIME/DATE/DATETIME/TIMESTAMP) -> TIME
(DATE/DATETIME/TIMESTAMP, TIME/DATE/DATETIME/TIMESTAMP) -> DATETIME

Future changes (TODOs):

  1. Accept strings as MySQL does
  2. Update if and after [Discussion] Do we need to support more than 24 hours in TIME? #852

Test queries:

SELECT ADDTIME(TIME('23:59:59'), TIMESTAMP('2008-11-15 01:00:00'));
SELECT ADDTIME(TIME('23:59:59'), DATE('2004-01-01'));
SELECT ADDTIME(DATE('2008-12-12'), DATE('2008-11-15'));
SELECT ADDTIME(TIME('23:59:59'), DATETIME('2008-11-15 01:00:00'));

Test data

I found that first 6 rows from date0, time0, time1, datetime0 are good for testing - these columns have different data types in MySQL. In OpenSearch SQL all [date][time] columns have timestamp type, so I use CAST for clear testing.

data
mysql> show fields from Calcs where field IN ('date0', 'time0', 'time1', 'datetime0');
+-----------+-----------+------+-----+---------+-------+
| Field     | Type      | Null | Key | Default | Extra |
+-----------+-----------+------+-----+---------+-------+
| date0     | date      | YES  |     | NULL    |       |
| time0     | datetime  | YES  |     | NULL    |       |
| time1     | time      | YES  |     | NULL    |       |
| datetime0 | timestamp | YES  |     | NULL    |       |
+-----------+-----------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql> select date0, time0, time1, datetime0 from calcs;
+------------+---------------------+----------+---------------------+
| date0      | time0               | time1    | datetime0           |
+------------+---------------------+----------+---------------------+
| 2004-04-15 | 1899-12-30 21:07:32 | 19:36:22 | 2004-07-09 10:17:35 |
| 1972-07-04 | 1900-01-01 13:48:48 | 02:05:25 | 2004-07-26 12:30:34 |
| 1975-11-12 | 1900-01-01 18:21:08 | 09:33:31 | 2004-08-02 07:59:23 |
| 2004-06-04 | 1900-01-01 18:51:48 | 22:50:16 | 2004-07-05 13:14:20 |
| 2004-06-19 | 1900-01-01 15:01:19 | NULL     | 2004-07-28 23:30:22 |
| NULL       | 1900-01-01 08:59:39 | 19:57:33 | 2004-07-22 00:30:23 |
| NULL       | 1900-01-01 07:37:48 | NULL     | 2004-07-28 06:54:50 |
| NULL       | 1900-01-01 19:45:54 | 19:48:23 | 2004-07-12 17:30:16 |
| NULL       | 1900-01-01 09:00:59 | 22:20:14 | 2004-07-04 22:49:28 |
| NULL       | 1900-01-01 20:36:00 | NULL     | 2004-07-23 21:13:37 |
| NULL       | 1900-01-01 01:31:32 | 00:05:57 | 2004-07-14 08:16:44 |
| NULL       | 1899-12-30 22:15:40 | 04:40:49 | 2004-07-25 15:22:26 |
| NULL       | 1900-01-01 13:53:46 | 04:48:07 | 2004-07-17 14:01:56 |
| NULL       | 1900-01-01 04:57:51 | NULL     | 2004-07-19 22:21:31 |
| NULL       | 1899-12-30 22:42:43 | 18:58:41 | 2004-07-31 11:57:52 |
| NULL       | 1899-12-30 22:24:08 | NULL     | 2004-07-14 07:43:00 |
| NULL       | 1900-01-01 11:58:29 | 12:33:57 | 2004-07-28 12:34:28 |
+------------+---------------------+----------+---------------------+
17 rows in set (0.00 sec)

Fixes

https://forum.opensearch.org/t/subdate-date-sub-query-method-not-supported/9252

Check List

  • New functionality includes testing.
    • All tests pass, including unit test, integration test and doctest
  • New functionality has been documented.
    • New functionality has javadoc added
    • New functionality has user manual doc added
  • Commits are signed per the DCO using --signoff

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

* Add functions `ADDTIME` and `SUBTIME`.

Signed-off-by: Yury-Fridlyand <yuryf@bitquilltech.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
@codecov-commenter
Copy link

codecov-commenter commented Dec 19, 2022

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.90%. Comparing base (aae57a0) to head (1b46be4).
⚠️ Report is 822 commits behind head on main.

❌ Your project status has failed because the head coverage (95.90%) is below the target coverage (99.00%). You can increase the head coverage or adjust the target coverage.

Additional details and impacted files
@@             Coverage Diff              @@
##               main    #1194      +/-   ##
============================================
- Coverage     98.34%   95.90%   -2.44%     
- Complexity     3584     3593       +9     
============================================
  Files           344      354      +10     
  Lines          8858     9566     +708     
  Branches        559      680     +121     
============================================
+ Hits           8711     9174     +463     
- Misses          142      334     +192     
- Partials          5       58      +53     
Flag Coverage Δ
query-workbench 62.76% <ø> (?)
sql-engine 98.34% <100.00%> (+<0.01%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

penghuo
penghuo previously approved these changes Jan 6, 2023
dai-chen
dai-chen previously approved these changes Jan 6, 2023
@dai-chen
Copy link
Collaborator

dai-chen commented Jan 6, 2023

@Yury-Fridlyand There seems some conflicts blocking the merge.

@Yury-Fridlyand Yury-Fridlyand dismissed stale reviews from dai-chen and penghuo via 3c77a95 January 6, 2023 18:46
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
…ubtime-functions

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
@Yury-Fridlyand
Copy link
Collaborator Author

Fixed, please re-approve.

@Yury-Fridlyand Yury-Fridlyand merged commit 7630f87 into opensearch-project:main Jan 9, 2023
@Yury-Fridlyand Yury-Fridlyand deleted the integ-datetime-addsubtime-functions branch January 9, 2023 18:23
opensearch-trigger-bot bot pushed a commit that referenced this pull request Jan 9, 2023
* Add functions `ADDTIME` and `SUBTIME`. (#132)

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
(cherry picked from commit 7630f87)
YANG-DB pushed a commit that referenced this pull request Jan 9, 2023
* Add functions `ADDTIME` and `SUBTIME`. (#132)

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
(cherry picked from commit 7630f87)

Co-authored-by: Yury-Fridlyand <yury.fridlyand@improving.com>
penghuo added a commit that referenced this pull request Jan 10, 2023
* Add BWC tests for running against distribution bundle.  (#1209)

Signed-off-by: Zelin Hao <zelinhao@amazon.com>

* Add Alternate Syntax For Match_Query And Other Functions (#1166)

Added Tests And Implementation For Match_Query, Match_Phrase, and Multi_Match Functions

Signed-off-by: GabeFernandez310 <gabrielf@bitquilltech.com>

Signed-off-by: GabeFernandez310 <gabrielf@bitquilltech.com>
Signed-off-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>

* Merge pull request #1241 from Bit-Quill/Failing-CI-Hot-Fix

Hot Fix For CI Build

(cherry picked from commit aae57a0)
Signed-off-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>

* Fixed error with single timestamp query (#1244) (#1246)

Signed-off-by: vamsi-amazon <reddyvam@amazon.com>

Signed-off-by: vamsi-amazon <reddyvam@amazon.com>
(cherry picked from commit ee949cc)

Co-authored-by: vamsi-amazon <reddyvam@amazon.com>

* Add Second_Of_Minute Function As An Alias Of The Second Function (#1231) (#1237)

Added Testing And Implementation For Second_Of_Minute Function

Signed-off-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>

Signed-off-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>
(cherry picked from commit dce7d0e)

Co-authored-by: GabeFernandez310 <gabrielf@bitquilltech.com>

* Add functions `ADDTIME` and `SUBTIME`. (#132) (#1194) (#1252)

* Add functions `ADDTIME` and `SUBTIME`. (#132)

Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
(cherry picked from commit 7630f87)

Co-authored-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Add Day_Of_Week Function As An Alias Of DayOfWeek (#190) (#1228) (#1239)

Added Implementation And Testing For Day_Of_Week Function

Signed-off-by: GabeFernandez310 <gabrielf@bitquilltech.com>

Signed-off-by: GabeFernandez310 <gabrielf@bitquilltech.com>
(cherry picked from commit bac9c37)

Co-authored-by: GabeFernandez310 <gabrielf@bitquilltech.com>

* [Backport 2.x] Add Minute_Of_Hour Function As An Alias Of Minute Function (#1253)

* Add Minute_Of_Hour Function As An Alias Of Minute Function (#196) (#1230)

Added Testing And Implementation For Minute_Of_Hour Function

Signed-off-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>

Signed-off-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>
(cherry picked from commit 61e2374)

* Added Missing Imports

Signed-off-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>

Signed-off-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>

* Add support for long value return for CEIL, CEILING and FLOOR math functions (#1205) (#1255)

* Added long fix for CEIL, CEILING and FLOOR functions using LONG instead of INT for RETURN.

Signed-off-by: MitchellGale-BitQuill <mitchellg@bitquilltech.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Co-authored-by: Yury-Fridlyand <yury.fridlyand@improving.com>

* Support JOIN query on object field with unexpanded name (#1229) (#1250)

* Resolve sub object field in search hit source

Signed-off-by: Chen Dai <daichen@amazon.com>

* Rename to unexpanded object

Signed-off-by: Chen Dai <daichen@amazon.com>

* Update IT with where condition

Signed-off-by: Chen Dai <daichen@amazon.com>

* Fix test index mapping

Signed-off-by: Chen Dai <daichen@amazon.com>

Signed-off-by: Chen Dai <daichen@amazon.com>
(cherry picked from commit 151f4cc)

Co-authored-by: Chen Dai <daichen@amazon.com>

* Remove unnecessary scripts after repo split (#1256)

Signed-off-by: Joshua Li <joshuali925@gmail.com>

* Add Support For `TIME` Type in "*_OF_YEAR" Functions (#199) (#1223) (#1258)

Added Support And Tests For Time Type in day_of_year, week_of_year, month_of_year Functions
Signed-off-by: GabeFernandez310 <gabrielf@bitquilltech.com>
(cherry picked from commit 6e72f18)

Co-authored-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>

Signed-off-by: Zelin Hao <zelinhao@amazon.com>
Signed-off-by: GabeFernandez310 <gabrielf@bitquilltech.com>
Signed-off-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>
Signed-off-by: MitchellGale-BitQuill <mitchellg@bitquilltech.com>
Signed-off-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Signed-off-by: Joshua Li <joshuali925@gmail.com>
Co-authored-by: Zelin Hao <87548827+zelinh@users.noreply.github.com>
Co-authored-by: GabeFernandez310 <gabrielf@bitquilltech.com>
Co-authored-by: YANGDB <yang.db.dev@gmail.com>
Co-authored-by: opensearch-trigger-bot[bot] <98922864+opensearch-trigger-bot[bot]@users.noreply.github.com>
Co-authored-by: vamsi-amazon <reddyvam@amazon.com>
Co-authored-by: Yury-Fridlyand <yury.fridlyand@improving.com>
Co-authored-by: GabeFernandez310 <Gabriel.Fernandez@improving.com>
Co-authored-by: Chen Dai <daichen@amazon.com>
Co-authored-by: Joshua Li <joshuali925@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

backport 2.x enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants