Julian- I managed to reproduce it in isolation. It’s pretty weird.
https://issues.apache.org/jira/browse/CALCITE-1996 -Marc > On Oct 2, 2017, at 1:32 PM, Julian Hyde <[email protected]> wrote: > > Thanks for investigating. I think you should file a bug report with > everything you know about this issue. It passes my threshold of “undesirable > behavior”. If we later get a reproducible test case and a fix that’s a bonus. > >> On Oct 2, 2017, at 7:58 AM, Marc Prud'hommeaux <[email protected]> wrote: >> >> >> Interestingly, it turns out this only happens when I re-use a RelBuilder >> than I’ve used for a bunch of other operations, even though I call clear() >> on it. When I use a fresh new RelBuilder, I’m able to select from a >> multi-values values call. >> >> I’ll look into it some more and file a bug report if it turns out to be >> easily reproducible. >> >> >>> On Oct 1, 2017, at 5:32 PM, Marc Prud'hommeaux <[email protected]> wrote: >>> >>> >>> >>> I notice that if I create inline values using: >>> >>> RelBuilder.values(Iterable<? extends List<RexLiteral>> tupleList, >>> RelDataType rowType) >>> >>> I lose the field names that I put in the RelDataType, and the fields are >>> named "EXPR$0”, “EXPR$1”, ... >>> >>> This is also seen if I create a Rel from the SQL string "SELECT X.A FROM >>> (VALUES 1) AS X(A)” via Planner.parse, Planner.validate, then Planner.rel, >>> whose JSON representation winds up looking like: >>> >>> { >>> "rels": [ >>> { >>> "id": "0", >>> "relOp": "LogicalValues", >>> "type": [ >>> { >>> "type": "INTEGER", >>> "nullable": false, >>> "name": "EXPR$0" >>> } >>> ], >>> "tuples": [ >>> [ >>> 1 >>> ] >>> ], >>> "inputs": [] >>> }, >>> { >>> "id": "1", >>> "relOp": "LogicalProject" >>> } >>> ] >>> } >>> >>> However, in sqlline, I can perform the same query: >>> >>> 0: jdbc:calcite:model=inline:{"version":1.0,"> SELECT X.A FROM (VALUES 1) >>> AS X(A); >>> +------------+ >>> | A | >>> +------------+ >>> | 1 | >>> +------------+ >>> 1 row selected (0.02 seconds) >>> >>> and the column name “A” is preserved. >>> >>> Is there some mechanism for retaining the column name when using >>> RelBuilder.values() other than putting the column name in the RelDataType? >>> >>> >>> >>> >>> >> >
