liningpan opened a new issue, #2514:
URL: https://github.com/apache/datafusion-sqlparser-rs/issues/2514
It appears that `sqlparser` is contributing significantly to DataFusion and
downstream projects that uses DataFusion as a library.
`cargo bloat` suggests that 6.4MB/100MB of the datafusion-cli binary
(release build) is attributed to sqlparser (for my own project, it bloats up to
20 MB/150MB).
```
> cargo bloat --bin datafusion-cli --release --filter sqlparser -n 100
--full-fn
File .text Size Crate Name
0.0% 0.1% 33.8KiB sqlparser
<sqlparser[f91aac8db406c26f]::parser::Parser>::parse_alter
0.0% 0.1% 32.8KiB sqlparser
<sqlparser[f91aac8db406c26f]::parser::Parser>::parse_create
0.0% 0.0% 26.7KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::hash::Hash>::hash::<hashbrown[a17ea828e164abc8]::hasher::DefaultHasher>
0.0% 0.0% 26.7KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::hash::Hash>::hash::<hashbrown[a17ea828e164abc8]::hasher::DefaultHasher>
0.0% 0.0% 26.7KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::hash::Hash>::hash::<hashbrown[a17ea828e164abc8]::hasher::DefaultHasher>
0.0% 0.0% 26.6KiB sqlparser
<sqlparser[f91aac8db406c26f]::parser::Parser>::parse_alter_table_operation
0.0% 0.0% 19.8KiB sqlparser
<sqlparser[f91aac8db406c26f]::ast::ddl::CreateTable as
core[663bb9e1522ba5ef]::hash::Hash>::hash::<hashbrown[a17ea828e164abc8]::hasher::DefaultHasher>
0.0% 0.0% 19.8KiB sqlparser
<sqlparser[f91aac8db406c26f]::ast::ddl::CreateTable as
core[663bb9e1522ba5ef]::hash::Hash>::hash::<hashbrown[a17ea828e164abc8]::hasher::DefaultHasher>
0.0% 0.0% 19.8KiB sqlparser
<sqlparser[f91aac8db406c26f]::ast::ddl::CreateTable as
core[663bb9e1522ba5ef]::hash::Hash>::hash::<hashbrown[a17ea828e164abc8]::hasher::DefaultHasher>
0.0% 0.0% 19.4KiB sqlparser
<sqlparser[f91aac8db406c26f]::dialect::snowflake::SnowflakeDialect as
sqlparser[f91aac8db406c26f]::dialect::Dialect>::parse_statement
0.0% 0.0% 18.4KiB sqlparser
<sqlparser[f91aac8db406c26f]::parser::Parser>::parse_table_factor::{closure#0}
0.0% 0.0% 17.5KiB sqlparser
sqlparser[f91aac8db406c26f]::dialect::snowflake::parse_create_table
0.0% 0.0% 17.4KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::fmt::Display>::fmt
0.0% 0.0% 17.4KiB sqlparser
<sqlparser[f91aac8db406c26f]::parser::Parser>::parse_create_table
0.0% 0.0% 17.1KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::clone::Clone>::clone
0.0% 0.0% 17.1KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::clone::Clone>::clone
0.0% 0.0% 17.1KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::clone::Clone>::clone
0.0% 0.0% 17.1KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::clone::Clone>::clone
0.0% 0.0% 17.1KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::clone::Clone>::clone
0.0% 0.0% 17.1KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::clone::Clone>::clone
0.0% 0.0% 17.1KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::clone::Clone>::clone
0.0% 0.0% 17.1KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::clone::Clone>::clone
0.0% 0.0% 17.1KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::clone::Clone>::clone
0.0% 0.0% 17.1KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::clone::Clone>::clone
0.0% 0.0% 17.1KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::clone::Clone>::clone
0.0% 0.0% 17.1KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::clone::Clone>::clone
0.0% 0.0% 17.1KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::clone::Clone>::clone
0.0% 0.0% 15.3KiB sqlparser
<sqlparser[f91aac8db406c26f]::parser::Parser>::parse_optional_create_table_config
0.0% 0.0% 15.0KiB sqlparser
<sqlparser[f91aac8db406c26f]::tokenizer::Tokenizer>::next_token
0.0% 0.0% 14.7KiB sqlparser
<sqlparser[f91aac8db406c26f]::parser::Parser>::parse_prefix::{closure#1}
0.0% 0.0% 13.9KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::hash::Hash>::hash::<std[5d97c59e5e5fafcc]::hash::random::DefaultHasher>
0.0% 0.0% 13.9KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::hash::Hash>::hash::<std[5d97c59e5e5fafcc]::hash::random::DefaultHasher>
0.0% 0.0% 13.9KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::hash::Hash>::hash::<std[5d97c59e5e5fafcc]::hash::random::DefaultHasher>
0.0% 0.0% 13.9KiB sqlparser <sqlparser[f91aac8db406c26f]::ast::Statement as
core[663bb9e1522ba5ef]::hash::Hash>::hash::<std[5d97c59e5e5fafcc]::hash::random::DefaultHasher>
0.0% 0.0% 13.6KiB sqlparser
<sqlparser[f91aac8db406c26f]::parser::Parser>::parse_grant_deny_revoke_privileges_objects
0.0% 0.0% 13.2KiB sqlparser
<sqlparser[f91aac8db406c26f]::parser::Parser>::parse_select
0.0% 0.0% 13.1KiB sqlparser
<sqlparser[f91aac8db406c26f]::ast::query::TableFactor as
core[663bb9e1522ba5ef]::hash::Hash>::hash::<std[5d97c59e5e5fafcc]::hash::random::DefaultHasher>
0.0% 0.0% 13.1KiB sqlparser
<sqlparser[f91aac8db406c26f]::ast::query::TableFactor as
core[663bb9e1522ba5ef]::hash::Hash>::hash::<std[5d97c59e5e5fafcc]::hash::random::DefaultHasher>
0.0% 0.0% 13.1KiB sqlparser
<sqlparser[f91aac8db406c26f]::ast::query::TableFactor as
core[663bb9e1522ba5ef]::hash::Hash>::hash::<std[5d97c59e5e5fafcc]::hash::random::DefaultHasher>
0.0% 0.0% 13.1KiB sqlparser
<sqlparser[f91aac8db406c26f]::ast::query::TableFactor as
core[663bb9e1522ba5ef]::hash::Hash>::hash::<std[5d97c59e5e5fafcc]::hash::random::DefaultHasher>
```
It appears that there are a substantial number of `hash` and `clone`
implementations that got inlined for `Statement` and `CreateTable` types. In my
case, I got like 20 copies for Statement with hashbrown hasher alone.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]