Uploaded image for project: 'Apache AsterixDB'
  1. Apache AsterixDB
  2. ASTERIXDB-2220

Resolve nested key expression

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 0.9.4
    • 0.9.4.2
    • COMP - Compiler

    Description

      key field-access expression is not recognized when the first argument is a variable

      Reproduce
      DDL:

      DROP DATAVERSE Facebook IF EXISTS;
      CREATE DATAVERSE Facebook;
      
      Use Facebook;
      
      CREATE TYPE PersonType AS closed
      
      { id:string, name:string }
      ;
      
      CREATE TYPE FriendshipType AS closed
      
      { person : PersonType, Friends :[PersonType] }
      ;
      
      /* Creating Datasets */
      
      CREATE DATASET Person(PersonType)
      PRIMARY KEY id;
      
      CREATE DATASET Friendship(FriendshipType)
      PRIMARY KEY person.id;
      

      Query:

      Use Facebook;
      
      select first.person.name as n1, second.person.name as n2
      from Friendship first, Friendship second
      where first.person.id = second.person.id;
      

      Plan:

      "distribute result [$$29]
      -- DISTRIBUTE_RESULT  |PARTITIONED|
        exchange
        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
          project ([$$29])
          -- STREAM_PROJECT  |PARTITIONED|
            assign [$$29] <- [{"n1": $$36, "n2": $$37}]
            -- ASSIGN  |PARTITIONED|
              project ([$$36, $$37])
              -- STREAM_PROJECT  |PARTITIONED|
                exchange
                -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                  join (eq($$34, $$35))
                  -- HYBRID_HASH_JOIN [$$34][$$35]  |PARTITIONED|
                    exchange
                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                      project ([$$36, $$34])
                      -- STREAM_PROJECT  |PARTITIONED|
                        assign [$$36, $$34] <- [$$37, $$35]
                        -- ASSIGN  |PARTITIONED|
                          exchange
                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                            replicate
                            -- REPLICATE  |PARTITIONED|
                              exchange
                              -- HASH_PARTITION_EXCHANGE [$$35]  |PARTITIONED|
                                project ([$$37, $$35])
                                -- STREAM_PROJECT  |PARTITIONED|
                                  assign [$$37, $$35] <- [$$31.getField(1), $$31.getField(0)]
                                  -- ASSIGN  |PARTITIONED|
                                    project ([$$31])
                                    -- STREAM_PROJECT  |PARTITIONED|
                                      assign [$$31] <- [$$second.getField(0)]
                                      -- ASSIGN  |PARTITIONED|
                                        project ([$$second])
                                        -- STREAM_PROJECT  |PARTITIONED|
                                          exchange
                                          -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                            data-scan []<-[$$33, $$second] <- Facebook.Friendship
                                            -- DATASOURCE_SCAN  |PARTITIONED|
                                              exchange
                                              -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                                empty-tuple-source
                                                -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
                    exchange
                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                      replicate
                      -- REPLICATE  |PARTITIONED|
                        exchange
                        -- HASH_PARTITION_EXCHANGE [$$35]  |PARTITIONED|
                          project ([$$37, $$35])
                          -- STREAM_PROJECT  |PARTITIONED|
                            assign [$$37, $$35] <- [$$31.getField(1), $$31.getField(0)]
                            -- ASSIGN  |PARTITIONED|
                              project ([$$31])
                              -- STREAM_PROJECT  |PARTITIONED|
                                assign [$$31] <- [$$second.getField(0)]
                                -- ASSIGN  |PARTITIONED|
                                  project ([$$second])
                                  -- STREAM_PROJECT  |PARTITIONED|
                                    exchange
                                    -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                      data-scan []<-[$$33, $$second] <- Facebook.Friendship
                                      -- DATASOURCE_SCAN  |PARTITIONED|
                                        exchange
                                        -- ONE_TO_ONE_EXCHANGE  |PARTITIONED|
                                          empty-tuple-source
                                          -- EMPTY_TUPLE_SOURCE  |PARTITIONED|
      

      Attachments

        Activity

          People

            dlychagin-cb Dmitry Lychagin
            wyk Wail Y. Alkowaileet
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated: