[ https://issues.apache.org/jira/browse/ASTERIXDB-3037?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17543416#comment-17543416 ]
Michael J. Carey edited comment on ASTERIXDB-3037 at 5/28/22 5:28 AM: ---------------------------------------------------------------------- Aha!! That makes sense...! was (Author: dtabass): Aha!! That makes sense > Array indexing not being used when it seems applicable > ------------------------------------------------------ > > Key: ASTERIXDB-3037 > URL: https://issues.apache.org/jira/browse/ASTERIXDB-3037 > Project: Apache AsterixDB > Issue Type: Bug > Components: COMP - Compiler, IDX - Indexes, SQL - Translator SQL++ > Affects Versions: 0.9.8 > Reporter: Michael J. Carey > Assignee: Glenn Justo Galvizo > Priority: Major > > Why aren't array indexes useful for the queries below that have existential > predicates on the bosses array? Seems like they should apply! > > {noformat} > DROP DATAVERSE HierarchyDemo IF EXISTS; > CREATE DATAVERSE HierarchyDemo; > USE HierarchyDemo; > CREATE TYPE genericType AS { _id: uuid }; > CREATE COLLECTION employees(genericType) > PRIMARY KEY _id AUTOGENERATED; > CREATE INDEX bossIdx ON employees (UNNEST bosses: INT) EXCLUDE UNKNOWN KEY; > INSERT INTO employees ( > [ > { > "eno":100, "name": "Matt", "sal": 950000, > "level": 1, > "boss": null, > "bosses": [] > }, > { > "eno":200, "name": "Gopi", "sal": 750000, > "level": 2, > "boss": 100, > "bosses": [100] > }, > { > "eno":75, "name": "Mike", "sal": 50000, > "level": 3, > "boss": 200, > "bosses": [100,200] > }, > { > "eno":50, "name": "Keshav", "sal": 500000, > "level": 3, > "boss": 200, > "bosses": [100,200] > }, > { > "eno":80, "name": "Till", "sal": 400000, > "level": 4, > "boss": 50, > "bosses": [100,200,50] > }, > { > "eno":130, "name": "Kamini", "sal": 450000, > "level": 4, > "boss": 50, > "bosses": [100,200,50] > }, > { > "eno":1000, "name": "Dmitry", "sal": 300000, > "level": 5, > "boss": 80, > "bosses": [100,200,50,80] > }, > { > "eno":300, "name": "Murali", "sal": 275000, > "level": 5, > "boss": 80, > "bosses": [100,200,50,80] > }, > { > "eno":70, "name": "Sitaram", "sal": 300000, > "level": 5, > "boss": 130, > "bosses": [100,200,50,130] > } > ]); > -- Show all employees > SELECT VALUE e FROM employees e; > -- Show Keshav's boss > SELECT VALUE b > FROM employees e, employees b > WHERE e.boss = b.eno > AND e.name = "Keshav"; > -- Show all of Keshav's bosses (ordered by level) > LET kbossas = (SELECT VALUE k FROM employees k WHERE k.name = > "Keshav")[0].bosses > SELECT VALUE e FROM employees e > WHERE e.eno IN kbossas > ORDER BY e.level DESC; > -- Show Keshav's direct reports > SELECT VALUE r > FROM employees e, employees r > WHERE r.boss = e.eno > AND e.name = "Keshav"; > -- Show all of Keshav's reports > LET keshav = (SELECT VALUE t.eno FROM employees t WHERE t.name = "Keshav")[0] > SELECT VALUE e > FROM employees e > WHERE (SOME b IN e.bosses SATISFIES b = keshav); > {noformat} -- This message was sent by Atlassian Jira (v8.20.7#820007)