| 62 | } |
| 63 | |
| 64 | NormalizedSingleQuery Binder::bindSingleQuery(const SingleQuery& singleQuery) { |
| 65 | auto normalizedSingleQuery = NormalizedSingleQuery(); |
| 66 | for (auto i = 0u; i < singleQuery.getNumQueryParts(); ++i) { |
| 67 | normalizedSingleQuery.appendQueryPart(bindQueryPart(*singleQuery.getQueryPart(i))); |
| 68 | } |
| 69 | auto lastQueryPart = NormalizedQueryPart(); |
| 70 | for (auto i = 0u; i < singleQuery.getNumReadingClauses(); i++) { |
| 71 | lastQueryPart.addReadingClause(bindReadingClause(*singleQuery.getReadingClause(i))); |
| 72 | } |
| 73 | for (auto i = 0u; i < singleQuery.getNumUpdatingClauses(); ++i) { |
| 74 | lastQueryPart.addUpdatingClause(bindUpdatingClause(*singleQuery.getUpdatingClause(i))); |
| 75 | } |
| 76 | auto statementResult = BoundStatementResult(); |
| 77 | if (singleQuery.hasReturnClause()) { |
| 78 | auto boundReturnClause = bindReturnClause(*singleQuery.getReturnClause()); |
| 79 | lastQueryPart.setProjectionBody(boundReturnClause.getProjectionBody()->copy()); |
| 80 | statementResult = boundReturnClause.getStatementResult()->copy(); |
| 81 | } else { |
| 82 | statementResult = BoundStatementResult::createEmptyResult(); |
| 83 | } |
| 84 | normalizedSingleQuery.appendQueryPart(std::move(lastQueryPart)); |
| 85 | normalizedSingleQuery.setStatementResult(std::move(statementResult)); |
| 86 | return normalizedSingleQuery; |
| 87 | } |
| 88 | |
| 89 | NormalizedQueryPart Binder::bindQueryPart(const QueryPart& queryPart) { |
| 90 | auto normalizedQueryPart = NormalizedQueryPart(); |
nothing calls this directly
no test coverage detected