Skip to content

Support more DateTimeField variants#1191

Merged
alamb merged 1 commit into
apache:mainfrom
validio-io:dateparts-support
Apr 9, 2024
Merged

Support more DateTimeField variants#1191
alamb merged 1 commit into
apache:mainfrom
validio-io:dateparts-support

Conversation

@iffyio

@iffyio iffyio commented Mar 23, 2024

Copy link
Copy Markdown
Contributor

@coveralls

coveralls commented Mar 23, 2024

Copy link
Copy Markdown

Pull Request Test Coverage Report for Build 8407785234

Details

  • 77 of 86 (89.53%) changed or added relevant lines in 6 files are covered.
  • 3 unchanged lines in 1 file lost coverage.
  • Overall coverage increased (+0.01%) to 87.882%

Changes Missing Coverage Covered Lines Changed/Added Lines %
src/parser/mod.rs 12 13 92.31%
tests/sqlparser_bigquery.rs 9 10 90.0%
src/ast/value.rs 39 46 84.78%
Files with Coverage Reduction New Missed Lines %
tests/sqlparser_common.rs 3 97.14%
Totals Coverage Status
Change from base Build 8266982631: 0.01%
Covered Lines: 20524
Relevant Lines: 23354

💛 - Coveralls

- Adds `DATETIME` variant to `DatetimeField`
- Adds support for snowflake abbreviations via `Custom` variant.
  https://docs.snowflake.com/en/sql-reference/functions-date-time#supported-date-and-time-parts
- Adds support for BigQuery weekday `WEEK(MONDAY)` syntax
  https://cloud.google.com/bigquery/docs/reference/standard-sql/date_functions#extract
@iffyio iffyio force-pushed the dateparts-support branch from 0df4a25 to cd640b9 Compare March 24, 2024 07:38

@alamb alamb left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @iffyio (and I very much apologize for the delay in reviewing). The only thing I think this PR needs is to avoid creating intermediate strings in the Display fmt

Comment thread src/ast/value.rs
})
f.write_str(
match self {
DateTimeField::Year => "YEAR".to_string(),

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change to call to_string() will now cause a new string to be allocated for each type.

I think it would be better / more effiicent to use write! directly -- like

Suggested change
DateTimeField::Year => "YEAR".to_string(),
match self {
DateTimeField::Year => f.write_str("YEAR"),
DateTimeField::Month => f.write_str("MONTH"),
...

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah yes that makes a lot more sense, thanks for the follow up fix too!

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(for anyone following along it was #1209)

Comment thread src/ast/value.rs
#[cfg(not(feature = "std"))]
use alloc::string::String;

#[cfg(not(feature = "std"))]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you use the suggestion below I think you will not need these imports either

@alamb alamb left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In order to keep the code flowing (and the fact it took me so long to review this PR) I fixed the string copy issue and pushed a fix to this PR.

Thanks again @iffyio

@alamb alamb merged commit 127be97 into apache:main Apr 9, 2024
@iffyio iffyio deleted the dateparts-support branch April 10, 2024 17:33
JichaoS pushed a commit to luabase/sqlparser-rs that referenced this pull request May 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants