(statement: QueryNodePath<QueryParser.Query>)
| 153 | } |
| 154 | |
| 155 | function getReturningColumns(statement: QueryNodePath<QueryParser.Query>): ColumnReference[] { |
| 156 | const body = (statement.node as any)[statement.type] |
| 157 | |
| 158 | const relationRefs = getTableReferences(statement, false) |
| 159 | const { returningList = [], targetList = [] } = body |
| 160 | |
| 161 | const resTargets: QueryParser.ResTarget[] = [...returningList, ...targetList].filter( |
| 162 | node => getNodeType(node) === "ResTarget" |
| 163 | ) |
| 164 | |
| 165 | return resTargets |
| 166 | .map(resTarget => { |
| 167 | const propKey = returningList.indexOf(resTarget) > -1 ? "returningList" : "targetList" |
| 168 | const resTargetPath = createQueryNodeSubpath(statement, resTarget, propKey) |
| 169 | return resolveResTarget(resTargetPath, relationRefs) |
| 170 | }) |
| 171 | .filter((ref): ref is ColumnReference => ref !== null) |
| 172 | } |
| 173 | |
| 174 | function instantiateQuery(path: QueryNodePath<QueryParser.Query>, context: QueryContext): Query { |
| 175 | const referencedColumns = getReferencedColumns(path, context.expressionSpreadTypes) |
no test coverage detected