The two types in your example are incompatible. One is an array of CHAR(1). The other is an array of records, each with a single CHAR(7) field. -- Michael Mior mm...@apache.org
Le ven. 4 févr. 2022 à 11:27, Dmitry Sysolyatin <dm.sysolya...@gmail.com> a écrit : > So, the previous case started to work. But I faced with another issue. This > query does not work: > > ``` > "SELECT ARRAY_CONCAT(ARRAY['1', '2'], array(select 'toast.' || x from > unnest(ARRAY['1','2']) x))" > ``` > > ``` > java.lang.IllegalArgumentException: Cannot infer return type for > ARRAY_CONCAT; operand types: [CHAR(1) ARRAY, RecordType(CHAR(7) EXPR$0) > ARRAY] > ``` > > I created an issue - https://issues.apache.org/jira/browse/CALCITE-4999 > and > PR - https://github.com/apache/calcite/pull/2712 > > > On Fri, Feb 4, 2022 at 2:51 PM Dmitry Sysolyatin <dm.sysolya...@gmail.com> > wrote: > > > Actually, > > `SqlParser.Config.DEFAULT.withConformance(SqlConformanceEnum.BIG_QUERY)` > > helped, thanks ! > > I will try to understand why it doesn't work with BABEL conformance > > > > On Fri, Feb 4, 2022 at 2:35 PM Dmitry Sysolyatin < > dm.sysolya...@gmail.com> > > wrote: > > > >> How SqlParser config can help? If I understood correctly, parser config > >> affects only parser.parse stage. But code fails at the validation phase > >> > >> Also, I would like to use ARRAY_CONCAT function with postgres dialect. > My > >> parser config at the moment: > >> > >> ``` > >> val parserConfig: SqlParser.Config = > >> PostgresqlSqlDialect.DEFAULT > >> .configureParser(SqlParser > >> .config() > >> // It is needed in order to parse PG "!~" operator > >> .withParserFactory(SqlBabelParserImpl.FACTORY) > >> ) > >> .withConformance(SqlConformanceEnum.BABEL) > >> ``` > >> > >> On Fri, Feb 4, 2022 at 2:26 PM Thomas Rebele <treb...@tibco.com.invalid > > > >> wrote: > >> > >>> Hello, > >>> > >>> SqlParserTest might help you. It has some checks related to BIG_QUERY. > >>> Maybe a > >>> > >>> > .parserConfig(SqlParser.Config.DEFAULT.withConformance(SqlConformanceEnum.BIG_QUERY)) > >>> could fix the problem. > >>> > >>> Cordialement / Best Regards, > >>> *Thomas Rebele, PhD* | R&D Developer | Germany | www.tibco.com > >>> > >>> > >>> On Fri, Feb 4, 2022 at 12:57 PM Dmitry Sysolyatin < > >>> dm.sysolya...@gmail.com> > >>> wrote: > >>> > >>> > Hi! > >>> > I have a problem with ARRAY_CONCAT operator. > >>> > > >>> > The following code failed with the exception ''No match found for > >>> function > >>> > signature array_concat(<INTEGER ARRAY>, <INTEGER ARRAY>)". > >>> > ``` > >>> > val config = Frameworks.newConfigBuilder() > >>> > .parserConfig(parserConfig) > >>> > .defaultSchema(CalciteSchema.createRootSchema(false, > >>> false).plus()) > >>> > .operatorTable(SqlOperatorTables.chain( > >>> > SqlStdOperatorTable.instance(), > >>> > > SqlLibraryOperatorTableFactory.INSTANCE.getOperatorTable( > >>> > SqlLibrary.BIG_QUERY > >>> > ))) > >>> > .programs(Programs.standard()) > >>> > .build() > >>> > val planner = Frameworks.getPlanner(config) > >>> > > >>> > val query = "SELECT ARRAY_CONCAT(ARRAY[1, 2], ARRAY[2, 3])" > >>> > val parsedSqlNode = planner.parse(query) > >>> > planner.validate(parsedSqlNode) > >>> > ``` > >>> > > >>> > Am I doing something wrong or it is a bug? > >>> > > >>> > >> >