Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
Next Next commit
Prepare for 0.40.0 release, derive 0.2.0 release
  • Loading branch information
alamb committed Nov 27, 2023
commit cc4f1cc8e411972b42670f8d7a6c1666cc907753
69 changes: 69 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,75 @@ Given that the parser produces a typed AST, any changes to the AST will technica
## [Unreleased]
Check https://github.com/sqlparser-rs/sqlparser-rs/commits/main for undocumented changes.


## [0.40.0] 2023-11-27


Document round trip ability (#1052)

@alamb
alamb committed now
add {pre,post}_visit_query to Visitor (#1044)

@jmhain
jmhain committed 19 minutes ago
Commits on Nov 22, 2023
Add support for generated virtual columns with expression (#1051)

@takluyver
takluyver committed 5 days ago
Commits on Nov 21, 2023
Adds support for PostgreSQL "END" (#1035)

@tobyhede
tobyhede committed last week
Support INSERT INTO ... DEFAULT VALUES ... (#1036)

@CDThomas
CDThomas committed last week
Commits on Nov 20, 2023
Add support for release and rollback to savepoint syntax (#1045)

@CDThomas
CDThomas committed last week
Support CONVERT expressions (#1048)

@lovasoa
lovasoa committed last week
Support global and session parts in show variables for mysql and gene…

@emin100
emin100 committed last week
snowflake: PIVOT on derived table factors (#1027)

@lustefaniak
lustefaniak committed last week
Fix extra whitespace printed before ON CONFLICT (#1037)

@CDThomas
CDThomas committed last week
Commits on Nov 18, 2023
Add PRQLto list of users (#1031)

@vanillajonathan
@alamb
vanillajonathan and alamb committed last week
Support mssql json and xml extensions (#1043)

@lovasoa
lovasoa committed last week
Commits on Nov 10, 2023
add support for MAX as a character length (#1038)

@lovasoa
lovasoa committed 2 weeks ago
Commits on Oct 29, 2023
Support IN () syntax of SQLite, alternate proposal (#1028)

@alamb
alamb committed last month


## [0.39.0] 2023-10-27

### Added
Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ serde = { version = "1.0", features = ["derive"], optional = true }
# of dev-dependencies because of
# https://github.com/rust-lang/cargo/issues/1596
serde_json = { version = "1.0", optional = true }
sqlparser_derive = { version = "0.1.1", path = "derive", optional = true }
sqlparser_derive = { version = "0.2.0", path = "derive", optional = true }

[dev-dependencies]
simple_logger = "4.0"
Expand Down
2 changes: 1 addition & 1 deletion derive/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
[package]
name = "sqlparser_derive"
description = "proc macro for sqlparser"
version = "0.1.1"
version = "0.2.0"
authors = ["sqlparser-rs authors"]
homepage = "https://github.com/sqlparser-rs/sqlparser-rs"
documentation = "https://docs.rs/sqlparser_derive/"
Expand Down
16 changes: 16 additions & 0 deletions derive/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -131,3 +131,19 @@ visitor.post_visit_expr(<is null operand>)
visitor.post_visit_expr(<is null operand>)
visitor.post_visit_expr(<is null expr>)
```

## Releasing

This crate's release is not automated. Instead it is released manually as needed
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Document the steps needed to publish to crates.io:


Steps:
1. Update the version in `Cargo.toml`
2. Update the corresponding version in `../Cargo.toml`
3. Commit via PR
4. Publish to crates.io:

```shell
# update to latest checked in main branch and publish via
cargo publish
```

53 changes: 34 additions & 19 deletions derive/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6,25 +6,30 @@ use syn::{
Ident, Index, Lit, Meta, MetaNameValue, NestedMeta,
};


/// Implementation of `[#derive(Visit)]`
#[proc_macro_derive(VisitMut, attributes(visit))]
pub fn derive_visit_mut(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
derive_visit(input, &VisitType {
visit_trait: quote!(VisitMut),
visitor_trait: quote!(VisitorMut),
modifier: Some(quote!(mut)),
})
derive_visit(
Copy link
Contributor Author

Choose a reason for hiding this comment

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

This appears to be due to calling cargo fmt - I will revert

input,
&VisitType {
visit_trait: quote!(VisitMut),
visitor_trait: quote!(VisitorMut),
modifier: Some(quote!(mut)),
},
)
}

/// Implementation of `[#derive(Visit)]`
#[proc_macro_derive(Visit, attributes(visit))]
pub fn derive_visit_immutable(input: proc_macro::TokenStream) -> proc_macro::TokenStream {
derive_visit(input, &VisitType {
visit_trait: quote!(Visit),
visitor_trait: quote!(Visitor),
modifier: None,
})
derive_visit(
input,
&VisitType {
visit_trait: quote!(Visit),
visitor_trait: quote!(Visitor),
modifier: None,
},
)
}

struct VisitType {
Expand All @@ -33,15 +38,16 @@ struct VisitType {
modifier: Option<TokenStream>,
}

fn derive_visit(
input: proc_macro::TokenStream,
visit_type: &VisitType,
) -> proc_macro::TokenStream {
fn derive_visit(input: proc_macro::TokenStream, visit_type: &VisitType) -> proc_macro::TokenStream {
// Parse the input tokens into a syntax tree.
let input = parse_macro_input!(input as DeriveInput);
let name = input.ident;

let VisitType { visit_trait, visitor_trait, modifier } = visit_type;
let VisitType {
visit_trait,
visitor_trait,
modifier,
} = visit_type;

let attributes = Attributes::parse(&input.attrs);
// Add a bound `T: Visit` to every type parameter T.
Expand Down Expand Up @@ -125,17 +131,26 @@ impl Attributes {
}

// Add a bound `T: Visit` to every type parameter T.
fn add_trait_bounds(mut generics: Generics, VisitType{visit_trait, ..}: &VisitType) -> Generics {
fn add_trait_bounds(mut generics: Generics, VisitType { visit_trait, .. }: &VisitType) -> Generics {
for param in &mut generics.params {
if let GenericParam::Type(ref mut type_param) = *param {
type_param.bounds.push(parse_quote!(sqlparser::ast::#visit_trait));
type_param
.bounds
.push(parse_quote!(sqlparser::ast::#visit_trait));
}
}
generics
}

// Generate the body of the visit implementation for the given type
fn visit_children(data: &Data, VisitType{visit_trait, modifier, ..}: &VisitType) -> TokenStream {
fn visit_children(
data: &Data,
VisitType {
visit_trait,
modifier,
..
}: &VisitType,
) -> TokenStream {
match data {
Data::Struct(data) => match &data.fields {
Fields::Named(fields) => {
Expand Down