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

Ran Tao edited comment on CALCITE-6029 at 9/28/23 12:35 AM:
------------------------------------------------------------

hi [~mbudiu] I'm wondering why you test DATE_PART by using BabelParserFactory?

why don't use

 
{code:java}
@Test void testDatePart() {
    final SqlOperatorFixture f = fixture()
          .setFor(SqlLibraryOperators.DATE_PART)
          .withLibrary(SqlLibrary.POSTGRESQL);{code}
I think if we test a Function in SqlOperatorTest, just withLibrary is enough. 
Just like other Spark/PG functions.

If you decide to test some special syntax for postgresql, i think you can test 
it in babel module, not testkit module.

If i'm wrong, pls correct me.

 


was (Author: lemonjing):
hi [~mbudiu] I'm wondering why you test DATE_PART by using BabelParserFactory?

why don't use

 
{code:java}
@Test void testDatePart() {
    final SqlOperatorFixture f = 
fixture().withLibrary(SqlLibrary.POSTGRESQL);{code}

I think if we test a Function in SqlOperatorTest, just withLibrary is enough. 
Just like other Spark/PG functions.



If you decide to test some special syntax for postgresql, i think you can test 
it in babel module, not testkit module.

If i'm wrong, pls correct me.

 

> SqlOperatorTest cannot test operators that require the Babel parser
> -------------------------------------------------------------------
>
>                 Key: CALCITE-6029
>                 URL: https://issues.apache.org/jira/browse/CALCITE-6029
>             Project: Calcite
>          Issue Type: Bug
>          Components: babel, core
>    Affects Versions: 1.35.0
>            Reporter: Mihai Budiu
>            Priority: Minor
>              Labels: pull-request-available
>
> In SqlOperatorTest one can write code like this:
> {code:java}
> @Test void testDatePart() {
>     final SqlOperatorFixture f = fixture().withLibrary(SqlLibrary.POSTGRESQL)
>         .withParserConfig(p -> 
> p.withParserFactory(SqlBabelParserImpl.FACTORY));
> {code}
> This almost works, but the SqlOperatorTest.check function makes a connection 
> ignores the parserFactory, so parsing will fail:
> {code:java}
>     @Override public void check(SqlTestFactory factory, String query,
>         SqlTester.TypeChecker typeChecker,
>         SqlTester.ParameterChecker parameterChecker,
>         SqlTester.ResultChecker resultChecker) {
>       super.check(factory, query, typeChecker, parameterChecker, 
> resultChecker);
>       final RelDataTypeSystem typeSystem =
>           factory.typeSystemTransform.apply(RelDataTypeSystem.DEFAULT);
>       final ConnectionFactory connectionFactory =
>           factory.connectionFactory
>               .with(CalciteConnectionProperty.TYPE_SYSTEM, uri(FIELD));  /// 
> NO PARSER_FACTORY HERE
> {code}
> I am trying to fix this by adding a PARSER_FACTORY argument to the 
> connection, but then I get a class loader error from 
> AvaticaUtils.instantiatePlugin, which, in this case, cannot find the 
> SqlBabelParserImpl#FACTORY in the classpath.
> I would appreciate some help solving this last bit.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to