Hi Taewoo, The first query shouldn't fail because indexnl is just a hint. The second query should succeed because it's a valid indexing statement. High nesting levels in open record like JSON is not uncommon.
Best, Yingyi On Thu, Jul 13, 2017 at 10:51 PM, Taewoo Kim <[email protected]> wrote: > @Mike: In order to properly deal with the enforced index on a nested-type > field, I need to make sure that whether my understanding (each nested type > (except the leaf level0 has a record type for the next level) is correct or > not. Which one is a bug? The first one (without index) should fail? Or the > second one (with an index) should succeed? > > Best, > Taewoo > > On Thu, Jul 13, 2017 at 9:58 PM, Yingyi Bu <[email protected]> wrote: > > > Indeed, it's a bug! > > > > Best, > > Yingyi > > > > On Thu, Jul 13, 2017 at 9:52 PM, Mike Carey <[email protected]> wrote: > > > > > Sounds like a bug to me. > > > > > > > > > > > > On 7/13/17 7:59 PM, Taewoo Kim wrote: > > > > > >> Currently, I am working on a field type propagation without using > > >> initializing the OptimizableSubTree in the current index access > method. > > I > > >> am encountering an issue with an open-type enforced index. So, I just > > want > > >> to make sure that my understanding is correct. It looks like we can't > > have > > >> an enforced-index on a completely schemaless nested field. For > example, > > >> the > > >> following doesn't generate any issue. > > >> > > >> // > > >> create type DBLPType as open {id: int32} > > >> create type CSXType as closed {id: int32} > > >> > > >> create dataset DBLP(DBLPType) primary key id; > > >> create dataset CSX(CSXType) primary key id; > > >> > > >> for $a in dataset('DBLP') > > >> for $b in dataset('CSX') > > >> where $a.nested.one.title /*+ indexnl */ = $b.nested.one.title > > >> return {"arec": $a, "brec": $b} > > >> // > > >> > > >> However, the following generates an exception. So, can we assume that > to > > >> create an enforced-index, except the leaf level, there should be a > > defined > > >> record type. For example, for this example, there should be "nested" > > type > > >> and "one" type. > > >> > > >> // > > >> create type DBLPType as open {id: int32} > > >> create type CSXType as closed {id: int32} > > >> > > >> create dataset DBLP(DBLPType) primary key id; > > >> create dataset CSX(CSXType) primary key id; > > >> > > >> create index title_index_DBLP on DBLP(nested.one.title: string?) > > enforced; > > >> create index title_index_CSX on CSX(nested.one.title: string?) > enforced; > > >> > > >> for $a in dataset('DBLP') > > >> for $b in dataset('CSX') > > >> where $a.nested.one.title /*+ indexnl */ = $b.nested.one.title > > >> return {"arec": $a, "brec": $b} > > >> // > > >> > > >> Best, > > >> Taewoo > > >> > > >> > > > > > >
