Uploaded image for project: 'Couchbase Server'
  1. Couchbase Server
  2. MB-23057

Scan is covered avoid IntersectScan

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • Major
    • 4.6.2, 5.0.0
    • 5.0.0
    • query
    • None
    • Triaged
    • Unknown

    Description

      CREATE INDEX `idx_country` ON `default`(`address`.`country`) WHERE (`type` = "user");
      CREATE INDEX `gix_USMales` ON `default`(distinct (pairs(self))) WHERE (`type` = "user") and (`gender` = "M") and (`address`.`country` = "United States of America");
       
      idx_country is not covered, so filters can't use covers.
       
      Below is the output we used to get before resolving this bug:
      explain select count(*) from default where type = 'user' and address.country = 'United States of America' and gender = 'M';
      {
          "requestID": "1b38116d-94c9-4d3a-bf7b-cd4de4007066",
          "signature": "json",
          "results": [
              {
                  "plan": {
                      "#operator": "Sequence",
                      "~children": [
                          {
                              "#operator": "IntersectScan",
                              "scans": [
                                  {
                                      "#operator": "IndexScan2",
                                      "index": "idx_country",
                                      "index_id": "c9b5e2b0ad17028",
                                      "index_projection": {
                                          "primary_key": true
                                      },
                                      "keyspace": "default",
                                      "namespace": "default",
                                      "spans": [
                                          {
                                              "exact": true,
                                              "range": [
                                                  {
                                                      "high": "\"United States of America\"",
                                                      "inclusion": 3,
                                                      "low": "\"United States of America\""
                                                  }
                                              ]
                                          }
                                      ],
                                      "using": "gsi"
                                  },
                                  {
                                      "#operator": "IndexScan2",
                                      "covers": [
                                          "cover ((distinct (pairs(`default`))))",
                                          "cover ((meta(`default`).`id`))"
                                      ],
                                      "filter_covers": {
                                          "cover (((`default`.`address`).`country`))": "United States of America",
                                          "cover ((`default`.`gender`))": "M",
                                          "cover ((`default`.`type`))": "user",
                                          "cover (any `p` in pairs(`default`) satisfies (`p` = [\"country\", \"United States of America\"]) end)": true,
                                          "cover (any `p` in pairs(`default`) satisfies (`p` = [\"gender\", \"M\"]) end)": true,
                                          "cover (any `p` in pairs(`default`) satisfies (`p` = [\"type\", \"user\"]) end)": true
                                      },
                                      "index": "gix_USMales",
                                      "index_id": "3e8661a45258dc17",
                                      "index_projection": {
                                          "primary_key": true
                                      },
                                      "keyspace": "default",
                                      "namespace": "default",
                                      "spans": [
                                          {
                                              "exact": true,
                                              "range": [
                                                  {
                                                      "high": "[\"type\", \"user\"]",
                                                      "inclusion": 3,
                                                      "low": "[\"type\", \"user\"]"
                                                  }
                                              ]
                                          }
                                      ],
                                      "using": "gsi"
                                  },
                                  {
                                      "#operator": "IndexScan2",
                                      "covers": [
                                          "cover ((distinct (pairs(`default`))))",
                                          "cover ((meta(`default`).`id`))"
                                      ],
                                      "filter_covers": {
                                          "cover (((`default`.`address`).`country`))": "United States of America",
                                          "cover ((`default`.`gender`))": "M",
                                          "cover ((`default`.`type`))": "user",
                                          "cover (any `p` in pairs(`default`) satisfies (`p` = [\"country\", \"United States of America\"]) end)": true,
                                          "cover (any `p` in pairs(`default`) satisfies (`p` = [\"gender\", \"M\"]) end)": true,
                                          "cover (any `p` in pairs(`default`) satisfies (`p` = [\"type\", \"user\"]) end)": true
                                      },
                                      "index": "gix_USMales",
                                      "index_id": "3e8661a45258dc17",
                                      "index_projection": {
                                          "primary_key": true
                                      },
                                      "keyspace": "default",
                                      "namespace": "default",
                                      "spans": [
                                          {
                                              "exact": true,
                                              "range": [
                                                  {
                                                      "high": "[\"country\", \"United States of America\"]",
                                                      "inclusion": 3,
                                                      "low": "[\"country\", \"United States of America\"]"
                                                  }
                                              ]
                                          }
                                      ],
                                      "using": "gsi"
                                  },
                                  {
                                      "#operator": "IndexScan2",
                                      "covers": [
                                          "cover ((distinct (pairs(`default`))))",
                                          "cover ((meta(`default`).`id`))"
                                      ],
                                      "filter_covers": {
                                          "cover (((`default`.`address`).`country`))": "United States of America",
                                          "cover ((`default`.`gender`))": "M",
                                          "cover ((`default`.`type`))": "user",
                                          "cover (any `p` in pairs(`default`) satisfies (`p` = [\"country\", \"United States of America\"]) end)": true,
                                          "cover (any `p` in pairs(`default`) satisfies (`p` = [\"gender\", \"M\"]) end)": true,
                                          "cover (any `p` in pairs(`default`) satisfies (`p` = [\"type\", \"user\"]) end)": true
                                      },
                                      "index": "gix_USMales",
                                      "index_id": "3e8661a45258dc17",
                                      "index_projection": {
                                          "primary_key": true
                                      },
                                      "keyspace": "default",
                                      "namespace": "default",
                                      "spans": [
                                          {
                                              "exact": true,
                                              "range": [
                                                  {
                                                      "high": "[\"gender\", \"M\"]",
                                                      "inclusion": 3,
                                                      "low": "[\"gender\", \"M\"]"
                                                  }
                                              ]
                                          }
                                      ],
                                      "using": "gsi"
                                  }
                              ]
                          },
                          {
                              "#operator": "Parallel",
                              "~child": {
                                  "#operator": "Sequence",
                                  "~children": [
                                      {
                                          "#operator": "Filter",
                                          "condition": "(((cover ((`default`.`type`)) = \"user\") and (cover (((`default`.`address`).`country`)) = \"United States of America\")) and (cover ((`default`.`gender`)) = \"M\"))"
                                      },
                                      {
                                          "#operator": "InitialGroup",
                                          "aggregates": [
                                              "count(*)"
                                          ],
                                          "group_keys": []
                                      }
                                  ]
                              }
                          },
                          {
                              "#operator": "IntermediateGroup",
                              "aggregates": [
                                  "count(*)"
                              ],
                              "group_keys": []
                          },
                          {
                              "#operator": "FinalGroup",
                              "aggregates": [
                                  "count(*)"
                              ],
                              "group_keys": []
                          },
                          {
                              "#operator": "Parallel",
                              "~child": {
                                  "#operator": "Sequence",
                                  "~children": [
                                      {
                                          "#operator": "InitialProject",
                                          "result_terms": [
                                              {
                                                  "expr": "count(*)"
                                              }
                                          ]
                                      },
                                      {
                                          "#operator": "FinalProject"
                                      }
                                  ]
                              }
                          }
                      ]
                  },
                  "text": "select count(*) from default where type = 'user' and address.country = 'United States of America' and gender = 'M';"
              }
          ],
          "status": "success",
          "metrics": {
              "elapsedTime": "44.417604ms",
              "executionTime": "44.39548ms",
              "resultCount": 1,
              "resultSize": 10246
          }
      }
      

      Attachments

        Issue Links

          No reviews matched the request. Check your Options in the drop-down menu of this sections header.

          Activity

            People

              Prerna.Manaktala Prerna Manaktala (Inactive)
              Sitaram.Vemulapalli Sitaram Vemulapalli
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                PagerDuty