{"id":19867930,"url":"https://github.com/tymorrow/qo","last_synced_at":"2025-05-02T07:31:07.176Z","repository":{"id":82278579,"uuid":"47937523","full_name":"tymorrow/qo","owner":"tymorrow","description":"A naive SQL query plan optimizer [needs cleanup]","archived":false,"fork":false,"pushed_at":"2015-12-22T13:04:39.000Z","size":1142,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-04-06T23:25:37.470Z","etag":null,"topics":["optimization","parse","query-tree","sql","sql-query"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tymorrow.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-12-13T21:40:29.000Z","updated_at":"2021-02-25T15:33:34.000Z","dependencies_parsed_at":"2023-03-15T23:40:49.095Z","dependency_job_id":null,"html_url":"https://github.com/tymorrow/qo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tymorrow%2Fqo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tymorrow%2Fqo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tymorrow%2Fqo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tymorrow%2Fqo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tymorrow","download_url":"https://codeload.github.com/tymorrow/qo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252002005,"owners_count":21678467,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["optimization","parse","query-tree","sql","sql-query"],"created_at":"2024-11-12T15:31:20.031Z","updated_at":"2025-05-02T07:31:06.691Z","avatar_url":"https://github.com/tymorrow.png","language":"C#","readme":"# Qo\n\nQo is a naive, visualizer of query tree optimization.\nI created it for a database class project.\n\nThe specifications of the project were as follows:\n  - Parse an SQL query (string) to some intermediary representation\n  - Convert it to its Relational Algebra (RA) equivalent\n  - Convert the RA to a query tree\n  - Apply numerous optimization rules to the query tree\n    - Output the query tree after reach stage of optimization\n\nQo consists of a web application (`Qo.Web`) and a parsing library (`Qo.Parsing`). \n\nThe web app allows me to utilize D3.js for query tree rendering while enjoying the benefits of C# on the backend.\nI started Qo as a desktop app and tried rendering the query trees in the app and by outputing DOT files.\nNeither method was as clean as doing it in the browser with D3.js.\nDemoing this to my professor was also much easier because he didn't have to download an executable.\n\nThe parsing library contains all of the intermediary code for working with SQL, RA, query trees, and optimization.\n","funding_links":[],"categories":["C\\#"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftymorrow%2Fqo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftymorrow%2Fqo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftymorrow%2Fqo/lists"}