@Ildar: you can change "create type CSXType as closed {id: int32}" to "create type CSXType as *open* {id: int32}". My intention was that.
Best, Taewoo On Fri, Jul 14, 2017 at 12:06 AM, Ildar Absalyamov < ildar.absalya...@gmail.com> wrote: > Maybe I missed something, but how nested access on a closed type without a > proper nested field is ever valid? > > create type CSXType as closed {id: int32} > create index title_index_CSX on CSX(nested.one.title: string?) enforced; > > Will this index every be anything but empty? > > 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} > > Will this query return anything, but empty result? > > To me it feels like that should be compile time error in both cases: > during index DDL and during the query. > > > On Jul 13, 2017, at 22:51, Taewoo Kim <wangs...@gmail.com> 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 <buyin...@gmail.com> wrote: > > > >> Indeed, it's a bug! > >> > >> Best, > >> Yingyi > >> > >> On Thu, Jul 13, 2017 at 9:52 PM, Mike Carey <dtab...@gmail.com> 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 > >>>> > >>>> > >>> > >> > > Best regards, > Ildar > >