You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@calcite.apache.org by "Marco Jorge (Jira)" <ji...@apache.org> on 2021/12/23 18:37:00 UTC
[jira] [Comment Edited] (CALCITE-4963) Extensibility of SqlDialectFactory lacks reusability of SqlDialectFactoryImpl.*
[ https://issues.apache.org/jira/browse/CALCITE-4963?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17464740#comment-17464740 ]
Marco Jorge edited comment on CALCITE-4963 at 12/23/21, 6:36 PM:
-----------------------------------------------------------------
Please see [https://github.com/apache/calcite/pull/2658.]
Sample reusability:
{code:java}
import org.apache.calcite.sql.SqlDialect;
import org.apache.calcite.sql.SqlDialectFactoryImpl;
import org.apache.calcite.sql.dialect.AnsiSqlDialect;
import java.sql.DatabaseMetaData;
public class MySqlDialectFactory extends SqlDialectFactoryImpl {
@Override
public SqlDialect create(DatabaseMetaData databaseMetaData) {
SqlDialect.Context context = SqlDialectFactoryImpl.Utils.context(databaseMetaData);
if (/* my particular conditions */) {
return /* my particular dialect */;
} else {
return super.create(databaseMetaData, context, new AnsiSqlDialect(context));
}
}
}
{code}
was (Author: marcobjorge):
Please see [https://github.com/apache/calcite/pull/2658.]
Sample reusability:
{code:java}
import org.apache.calcite.sql.SqlDialect;
import org.apache.calcite.sql.SqlDialectFactoryImpl;
import org.apache.calcite.sql.dialect.AnsiSqlDialect;
import java.sql.DatabaseMetaData;
public class MySqlDialectFactory extends SqlDialectFactoryImpl {
@Override
public SqlDialect create(DatabaseMetaData databaseMetaData) {
SqlDialect.Context context = SqlDialectFactoryImpl.Utils.context(databaseMetaData);
if (/* my particular conditions */) {
return /* my particular dialect*/;
} else {
super.create(databaseMetaData, context, new AnsiSqlDialect(context));
}
}
} {code}
> Extensibility of SqlDialectFactory lacks reusability of SqlDialectFactoryImpl.*
> -------------------------------------------------------------------------------
>
> Key: CALCITE-4963
> URL: https://issues.apache.org/jira/browse/CALCITE-4963
> Project: Calcite
> Issue Type: Improvement
> Components: core
> Reporter: Marco Jorge
> Priority: Major
> Labels: pull-request-available
> Time Spent: 10m
> Remaining Estimate: 0h
>
> _(nicetities first - great project and thanks all for the great work)_
> Although it's possible to extend the SqlDialectFactory, the custom implementation cannot reuse any of the behaviour of the default SqlDialectFactoryImpl. The default SqlDialectFactoryImpl has lots of important/reusable behaviour such as #getCasing, #isCaseSensitive, #getNullCollation or even the default decisioning in the #create method.
> If any user needs to provide a custom SqlDialect yet still support the existing SqlDialects the user needs to copy the whole SqlDialectFactoryImpl to make the custom changes.
> This request is to make the default behavior in SqlDialectFactoryImpl reusable so that extensions don't need to fork a whole class.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)