Title: [FEATURE] Predicate Push Down Abstract Implementation · Issue #223 · stackql/stackql · GitHub
Open Graph Title: [FEATURE] Predicate Push Down Abstract Implementation · Issue #223 · stackql/stackql
X Title: [FEATURE] Predicate Push Down Abstract Implementation · Issue #223 · stackql/stackql
Description: Feature Description Design and implement an abstract interface (through a provider's x-stackQL-resources object) to take advantage of predicate push down to limit data (columns and/or rows) returned. Example(s) Given API operations which...
Open Graph Description: Feature Description Design and implement an abstract interface (through a provider's x-stackQL-resources object) to take advantage of predicate push down to limit data (columns and/or rows) returne...
X Description: Feature Description Design and implement an abstract interface (through a provider's x-stackQL-resources object) to take advantage of predicate push down to limit data (columns and/or rows) ret...
Opengraph URL: https://github.com/stackql/stackql/issues/223
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"[FEATURE] Predicate Push Down Abstract Implementation","articleBody":"**Feature Description**\r\nDesign and implement an abstract interface (through a provider's `x-stackQL-resources` object) to take advantage of predicate push down to limit data (columns and/or rows) returned. \r\n\r\n**Example(s)**\r\nGiven API operations which map to `SELECT` verbs in StackQL, identify the optional `query` parameters which can be mapped to the following operation:\r\n\r\n- column list for projection, invoked using `SELECT \u003cfield1\u003e, \u003cfield2\u003e` including fields operated on by scalar functions (such as `SPLIT_PART`, `JSON_EXTRACT`, etc.) \r\n- limiting records returned, invoked using `LIMIT \u003cnum\u003e`\r\n- filter expressions, invoked using `WHERE \u003cfield\u003e = '\u003csomething\u003e'`\r\n- ordering predicates, invoked using `ORDER BY \u003cfield\u003e`\r\n\r\nfor example...\r\n\r\n```yaml\r\n parameters:\r\n fields:\r\n description: Selector specifying which fields to include in a partial response.\r\n in: query\r\n name: fields\r\n schema:\r\n type: string\r\n```\r\nCreate a document based interface to map verbs in the parser to the specified query parameters.\r\n\r\n**Possible Approaches or Libraries to Consider**\r\nA possible approach would be to create an extension to the provider interface for example...\r\n\r\n```yaml\r\ncomponents:\r\n x-stackQL-resources:\r\n databases:\r\n id: google.spanner.databases\r\n name: databases\r\n title: Databases\r\n methods:\r\n projects_instances_databases_get:\r\n operation:\r\n $ref: '#/paths/~1v1~1projects~1{projectsId}~1instances~1{instancesId}~1databases~1{databasesId}/get'\r\n response:\r\n mediaType: application/json\r\n openAPIDocKey: '200'\r\n projects_instances_databases_list:\r\n operation:\r\n $ref: '#/paths/~1v1~1projects~1{projectsId}~1instances~1{instancesId}~1databases/get'\r\n response:\r\n mediaType: application/json\r\n openAPIDocKey: '200'\r\n objectKey: $.databases\r\n ...\r\n sqlVerbs:\r\n select:\r\n - $ref: '#/components/x-stackQL-resources/databases/methods/projects_instances_databases_get'\r\n - $ref: '#/components/x-stackQL-resources/databases/methods/projects_instances_databases_list'\r\n insert:\r\n - $ref: '#/components/x-stackQL-resources/databases/methods/projects_instances_databases_create'\r\n update: []\r\n delete: []\r\n predicates:\r\n select:\r\n rowFilter: \r\n param: filter\r\n example: \"column1 = 'value1' AND column2 = 'value2'\"\r\n colFilter:\r\n param: fields\r\n example: \"column1,column2\"\r\n orderBy:\r\n param: orderBy\r\n example: \"column1 ASC\"\r\n limit:\r\n param: limit\r\n example: 10\r\n```\r\nmay need to implement generalized `format`s for each type of predicate.","author":{"url":"https://github.com/jeffreyaven","@type":"Person","name":"jeffreyaven"},"datePublished":"2023-10-03T01:08:19.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":1},"url":"https://github.com/223/stackql/issues/223"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:67b5f403-05e4-b976-91ea-8933d5d64c91 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D896:ACA48:7FC026:B793D0:6A4D1C00 |
| html-safe-nonce | de98b465b6c25a8d135b085e83c2a2e8a9ddb6cab9068d1aa2a5127269a71ec8 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEODk2OkFDQTQ4OjdGQzAyNjpCNzkzRDA6NkE0RDFDMDAiLCJ2aXNpdG9yX2lkIjoiMzYxMDE0OTA5NDc0MjEwNTA4OCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | 86b75b1f4f0148472f3b08d8da6282c0277953287273e173ed70f36e2671a5f7 |
| hovercard-subject-tag | issue:1923091517 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/stackql/stackql/223/issue_layout |
| twitter:image | https://opengraph.githubassets.com/57a32fd914f38e7d20e6cae0cdfd2a846dfb2e9680fbb74fafe2393f15adefbc/stackql/stackql/issues/223 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/57a32fd914f38e7d20e6cae0cdfd2a846dfb2e9680fbb74fafe2393f15adefbc/stackql/stackql/issues/223 |
| og:image:alt | Feature Description Design and implement an abstract interface (through a provider's x-stackQL-resources object) to take advantage of predicate push down to limit data (columns and/or rows) returne... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | jeffreyaven |
| hostname | github.com |
| expected-hostname | github.com |
| None | bcb4661e6fb4fe8b394c51ea02ccdb2236d40dc59afc75a3bbba50bf6517134c |
| turbo-cache-control | no-preview |
| go-import | github.com/stackql/stackql git https://github.com/stackql/stackql.git |
| octolytics-dimension-user_id | 95105302 |
| octolytics-dimension-user_login | stackql |
| octolytics-dimension-repository_id | 443987542 |
| octolytics-dimension-repository_nwo | stackql/stackql |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 443987542 |
| octolytics-dimension-repository_network_root_nwo | stackql/stackql |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | fb70bd3c4b2bec429781b65419e912c66e2d5581 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width