[ 
https://issues.apache.org/jira/browse/CALCITE-1959?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16138839#comment-16138839
 ] 

Zain Humayun edited comment on CALCITE-1959 at 8/23/17 6:27 PM:
----------------------------------------------------------------

There was an edge case where the create method was given correctly populated 
fields, and a non-null connection which meant that it fetched the metadata 
twice in total, when it should only do it once. This is why I created another 
create method. That's why I changed the order of the code at the end of 
{{DruidTableFactory}}. 


was (Author: zhumayun):
There was an edge case where the create method was given correctly populated 
fields, and a non-null connection which meant that it fetch the metadata twice 
in total, when it should only do it once. This is why I created another create 
method. That's why I changed the order of the code at the end of 
{{DruidTableFactory}}. 

> Reduce the amount of Metadata and table name calls in Druid
> -----------------------------------------------------------
>
>                 Key: CALCITE-1959
>                 URL: https://issues.apache.org/jira/browse/CALCITE-1959
>             Project: Calcite
>          Issue Type: Improvement
>          Components: druid
>            Reporter: Zain Humayun
>            Assignee: Zain Humayun
>             Fix For: 1.14.0
>
>
> Currently in the Druid adapter, when a model definition file is not provided, 
> query times can be quite slow due to excessive metadata and table names 
> calls. Initial investigation reveals that a simple query like
> {code:sql}
> SELECT * from table
> {code}
> produces at least 30 http calls for fetching the table names, and another 30 
> calls for meta data. This slows down the query considerably, even when the 
> individual calls themselves are relatively quick. 
> The source of the issue seems to be {{DruidSchema#getTableMap}}, as this 
> method dispatches calls to both {{DruidConnectionImpl#metadata}} and 
> {{DruidConnectionImpl#tableNames}}. In addition, {{DruidTable#create}} makes 
> another call to {{DruidConnectionImpl#metadata}} even if it's given the 
> populated fields as arguments.
> {{getTableMap}} is called fairly often indirectly from many places, including 
> the validator, so as the query becomes larger, the problems gets a lot worse. 
> Ideally, one would provide a model definition to prevent this, but doing so 
> is not always possible/preferred for users.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to