github
html_url | issue_url | id | node_id | user | created_at | updated_at | author_association | body | reactions | issue | performed_via_github_app |
---|---|---|---|---|---|---|---|---|---|---|---|
https://github.com/simonw/datasette/pull/1893#issuecomment-1317837416 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1317837416 | IC_kwDOBm6k_c5OjJpo | 9599 | 2022-11-16T23:54:02Z | 2022-11-16T23:54:02Z | OWNER | I'm going to tackle #1897 in the next few minutes. Tests failed due to Prettier check, just pushed a fix so it would ignore `.bundle.js` too. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1317831555 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1317831555 | IC_kwDOBm6k_c5OjIOD | 9599 | 2022-11-16T23:47:13Z | 2022-11-16T23:47:13Z | OWNER | I'll open a follow-up issue to fix the schema. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1317831425 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1317831425 | IC_kwDOBm6k_c5OjIMB | 9599 | 2022-11-16T23:47:05Z | 2022-11-16T23:47:05Z | OWNER | OK, let's do it! Thanks so much for this. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1317829214 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1317829214 | IC_kwDOBm6k_c5OjHpe | 9599 | 2022-11-16T23:44:36Z | 2022-11-16T23:44:36Z | OWNER | Deployed that to https://datasette-pr-1893.vercel.app/fixtures - looks good to me! | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1317797044 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1317797044 | IC_kwDOBm6k_c5Oi_y0 | 9599 | 2022-11-16T23:08:34Z | 2022-11-16T23:08:34Z | OWNER | > I can push up a commit that uses the static fixtures schema for testing, but given that the query used to generate it is authed we would still need some work to make that work on live data, right? Yeah, push that up. I'm happy to wire in the query right after we land this. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1317746206 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1317746206 | IC_kwDOBm6k_c5OizYe | 9599 | 2022-11-16T22:17:24Z | 2022-11-16T22:17:24Z | OWNER | Deployed 0a649e8f78c23e8db6869442eeb0dfe36a5443da: https://datasette-pr-1893.vercel.app/fixtures | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1317744563 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1317744563 | IC_kwDOBm6k_c5Oiy-z | 9599 | 2022-11-16T22:16:03Z | 2022-11-16T22:16:03Z | OWNER | Honestly I'm not too bothered if table names with weird characters don't work correctly here - I care about those in the Datasette `fixtures.db` database because Datasette aims to support ANY valid SQLite database, so I need stuff in the test suite that includes weird edge cases like this. But I would hope very few people actually create tables with spaces in their names, so it's not a huge concern to me if autocompletion doesn't work properly for those. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1317475720 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1317475720 | IC_kwDOBm6k_c5OhxWI | 9599 | 2022-11-16T18:25:16Z | 2022-11-16T18:25:16Z | OWNER | Here's a query that returns the exact JSON we need to pass to the schema: https://latest.datasette.io/_internal?sql=with+inner+as+%28%0D%0A++select%0D%0A++++table_name%2C%0D%0A++++json_group_array%28name%29+as+table_columns%0D%0A++from%0D%0A++++columns%0D%0A++where%0D%0A++++database_name+%3D+%3Adatabase%0D%0A++group+by%0D%0A++++table_name%0D%0A%29%0D%0Aselect%0D%0A++json_group_object%28table_name%2C+table_columns%29%0D%0Afrom%0D%0A++inner&database=fixtures ```sql with inner as ( select table_name, json_group_array(name) as table_columns from columns where database_name = :database group by table_name ) select json_group_object(table_name, table_columns) from inner ``` Returns (after pretty-printing): ```json { "123_starts_with_digits": [ "content" ], "Table With Space In Name": [ "content", "pk" ], "attraction_characteristic": [ "name", "pk" ], "binary_data": [ "data" ], "complex_foreign_keys": [ "f1", "f2", "f3", "pk" ], "compound_primary_key": [ "content", "pk1", "pk2" ], "compound_three_primary_keys": [ "content", "pk1", "pk2", "pk3" ], "custom_foreign_key_label": [ "foreign_key_with_custom_label", "pk" ], "facet_cities": [ "id", "name" ], "facetable": [ "_city_id", "_neighborhood", "complex_array", "created", "distinct_some_null", "n", "on_earth", "pk", "planet_int", "state", "tags" ], "foreign_key_references": [ "foreign_key_compound_pk1", "foreign_key_compound_pk2", "foreign_key_with_blank_label", "foreign_key_with_label", "foreign_key_with_no_label", "pk" ], "infinity": [ "value" ], … | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1317465874 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1317465874 | IC_kwDOBm6k_c5Ohu8S | 9599 | 2022-11-16T18:21:17Z | 2022-11-16T18:21:54Z | OWNER | I was worrying about the server-side overhead of collecting together all of the tables and column names for databases that might have hundreds of tables... but then I remember that I built the `_internal` table precisely for this kind of thing - so gathering all of that data should still only be a single SQL query against an in-memory database. https://latest.datasette.io/login-as-root and then visit this page for an example query: https://latest.datasette.io/_internal?sql=select%0D%0A++database_name%2C%0D%0A++table_name%2C%0D%0A++json_group_array%28name%29%0D%0Afrom%0D%0A++columns%0D%0Awhere%0D%0A++database_name+%21%3D+%27_internal%27%0D%0Agroup+by%0D%0A++database_name%2C%0D%0A++table_name ```sql select database_name, table_name, json_group_array(name) from columns where database_name != '_internal' group by database_name, table_name ``` database_name | table_name | json_group_array(name) -- | -- | -- extra_database | searchable | ["pk","text1","text2"] extra_database | searchable_fts | ["__langid","content","docid","searchable_fts","text1","text2"] extra_database | searchable_fts_content | ["c0text1","c1text2","c2content","docid"] extra_database | searchable_fts_segdir | ["end_block","idx","leaves_end_block","level","root","start_block"] extra_database | searchable_fts_segments | ["block","blockid"] fixtures | 123_starts_with_digits | ["content"] fixtures | Table With Space In Name | ["content","pk"] fixtures | attraction_characteristic | ["name","pk"] fixtures | binary_data | ["data"] fixtures | complex_foreign_keys | ["f1","f2","f3","pk"] fixtures | compound_primary_key | ["content","pk1","pk2"] | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1317456909 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1317456909 | IC_kwDOBm6k_c5OhswN | 9599 | 2022-11-16T18:17:39Z | 2022-11-16T18:17:39Z | OWNER | Tiny feature request (since you're in this code already) - I keep hitting Command+Enter on my macOS keyboard to submit the query, but the correct shortcut is Shift+Enter. Would be great if both worked! | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1317452541 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1317452541 | IC_kwDOBm6k_c5Ohrr9 | 9599 | 2022-11-16T18:15:52Z | 2022-11-16T18:15:52Z | OWNER | Deployed latest copy with: ``` datasette publish vercel fixtures.db \ --project datasette-pr-1893 \ --about 'PR 1893' \ --about_url https://github.com/simonw/datasette/pull/1893 \ --scope datasette \ --branch eccb1c6c781d69d8ec3c542ef65c78a4a0927a7c ``` https://datasette-pr-1893.vercel.app/fixtures | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1317449610 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1317449610 | IC_kwDOBm6k_c5Ohq-K | 9599 | 2022-11-16T18:14:28Z | 2022-11-16T18:14:28Z | OWNER | > I'm thinking of also adding `count` to the list since that's a common thing people would want to autocomplete. I notice BQ console highlights `count` in the same manner as other keywords like `select` as well. Huh, yeah we should definitely have `count` - surprised it's not on the list on https://www.sqlite.org/lang_keywords.html which is why we didn't get it from the GPT-3 generated schema. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1316412234 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1316412234 | IC_kwDOBm6k_c5OdttK | 9599 | 2022-11-16T06:00:39Z | 2022-11-16T06:01:36Z | OWNER | Should note though that this is a classic example of GPT-3 making stuff up in places. > current: Returns the current date, time, or timestamp `select current` throws an error for me: https://latest.datasette.io/_memory?sql=select+current `select current_date, current_time, current_timestamp` works though: https://latest.datasette.io/_memory?sql=select+current_date%2C+current_time%2C+current_timestamp So let's drop `current` from the list. I'm OK with it though, I think it's likely good enough for the first attempt at this. We should drop `temp` and `temporary` too. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1316401895 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1316401895 | IC_kwDOBm6k_c5OdrLn | 9599 | 2022-11-16T05:50:40Z | 2022-11-16T05:50:40Z | OWNER | So I think our dialect (at least to start with) should be: ``` keywords: "and as asc between by case cast current current_date current_time current_timestamp desc distinct each else escape except exists explain filter first for from full generated group having if in index inner intersect into isnull join last left like limit not null or order outer over pragma primary query raise range regexp right rollback row select set table temp temporary then to union unique using values view virtual when where", // https://www.sqlite.org/datatype3.html types: "null integer real text blob", builtin: "" ``` I left `builtin` blank here because I don't think we need any of those things at all. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1316400688 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1316400688 | IC_kwDOBm6k_c5Odq4w | 9599 | 2022-11-16T05:49:31Z | 2022-11-16T05:49:31Z | OWNER | OK, I decided to play around with GPT-3 for this. https://beta.openai.com/playground I prompted: ``` For each keyword say it it can be used in a SQLite select statement: and as asc between by case cast cross current current_date current_time current_timestamp desc detach distinct each else end escape except exclude exclusive exists explain fail filter first following for foreign from full generated glob group groups having if ignore immediate in index indexed initially inner insert instead intersect into is isnull join key last left like limit match materialized natural no not nothing notnull null nulls of offset on or order others outer over partition plan pragma preceding primary query raise range recursive references regexp reindex release rename replace restrict returning right rollback row rows savepoint select set table temp temporary then ties to transaction trigger unbounded union unique update using vacuum values view virtual when where window with without - and: yes - as: yes - asc: yes - between: yes - by: yes - case: yes - cast: yes - current: yes - current_date: yes - current_time: yes - current_timestamp: yes - desc: yes - detach: no - distinct: yes - each: yes - else: yes - end: yes - escape: yes - except: no - exclude: yes - exclusive: no ``` Having given it these examples I ran it a few times: ``` - exists: yes - explain: no - fail: no - filter: yes - first: yes - following: no - for: yes - foreign: no - from: yes - full: no - generated: no - glob: yes - group: yes - groups: no - having: yes - if: yes - ignore: no - immediate: no - in: yes - index: yes - indexed: no - initially: no - inner: no - insert: no - instead: no - intersect: no - into: yes - is: yes - isnull: yes - join: yes - key: no - last: yes - left: yes - like: yes - limit: yes - match: no - materialized: no -natural: yes - no: no - not: no - nothing: no - notnull: yes - null: yes - nulls: yes - of: no - offset: yes - on: yes - or: yes -… | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1316294156 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1316294156 | IC_kwDOBm6k_c5OdQ4M | 9599 | 2022-11-16T04:00:12Z | 2022-11-16T04:00:12Z | OWNER | Have you ever seen CodeMirror correctly auto-completing columns? I'm not entirely sure I believe that the feature works anywhere else. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1316293353 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1316293353 | IC_kwDOBm6k_c5OdQrp | 9599 | 2022-11-16T03:59:03Z | 2022-11-16T03:59:03Z | OWNER | Deployed a fresh copy: ``` datasette publish vercel fixtures.db \ --branch b7b2942b13f9ea09cfa9f8c73e2869b9bd2349ae \ --project datasette-pr-1893 \ --about 'PR 1893' \ --about_url https://github.com/simonw/datasette/pull/1893 \ --scope datasette ``` https://datasette-pr-1893.vercel.app/fixtures | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1316253186 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1316253186 | IC_kwDOBm6k_c5OdG4C | 9599 | 2022-11-16T03:16:36Z | 2022-11-16T03:16:36Z | OWNER | Yeah I haven't written this down anywhere but Datasette definitely has an undocumented preference for lower-case SQL. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1316236448 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1316236448 | IC_kwDOBm6k_c5OdCyg | 9599 | 2022-11-16T03:04:57Z | 2022-11-16T03:04:57Z | OWNER | If you rebase from `main` you should get the fix for that test failure. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1316232588 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1316232588 | IC_kwDOBm6k_c5OdB2M | 9599 | 2022-11-16T03:00:04Z | 2022-11-16T03:00:04Z | OWNER | Oops, the tests are failing because of a test failure I introduced here: - #1890 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1316231560 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1316231560 | IC_kwDOBm6k_c5OdBmI | 9599 | 2022-11-16T02:59:00Z | 2022-11-16T02:59:00Z | OWNER | The resize handle doesn't appear on Mobile Safari on iPhone - I don't think that particularly matters though. The textarea does get a weird border around it when focused on iPhone though. Focused: ![BF34E8FB-E35C-4CAB-9BFB-8EEF7E29B16C_1_201_a](https://user-images.githubusercontent.com/9599/202072748-c85bab94-a039-4ed6-8185-3cac25c78ed3.jpeg) Not focused: ![31A5CF38-D540-4A1A-8A7D-E29453D150F4_1_201_a](https://user-images.githubusercontent.com/9599/202072744-d9f0ea62-13b7-46ff-afe1-6d88d7fb8b53.jpeg) | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1316227073 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1316227073 | IC_kwDOBm6k_c5OdAgB | 9599 | 2022-11-16T02:54:22Z | 2022-11-16T02:54:32Z | OWNER | If you can get a version of this working with table and column autocompletion just using a static JavaScript object in the source code with the right tables and columns, I'm happy to take on the work of turning that static object into something that Datasette includes in the page itself with all of the correct values. | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1316141764 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1316141764 | IC_kwDOBm6k_c5OcrrE | 9599 | 2022-11-16T01:26:59Z | 2022-11-16T01:26:59Z | OWNER | Resizing works great for me - and the page automatically sizes the editor to fit an existing query, e.g. on https://datasette-pr-1893.vercel.app/fixtures?sql=select+id%2C+content%2C+content2%0D%0A++from+primary_key_multiple_columns_explicit_label%0D%0A++order+by+id%0D%0A++limit+101 | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1316137982 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1316137982 | IC_kwDOBm6k_c5Ocqv- | 9599 | 2022-11-16T01:23:47Z | 2022-11-16T01:23:47Z | OWNER | Autocomplete here looks promising (I've wanted that to work for years!), but it does currently show a whole bunch of suggestions which aren't part of the SQLite SQL dialect: ![autocomplete](https://user-images.githubusercontent.com/9599/202060211-51ec9f45-bc52-459a-a729-27fc2faadff9.gif) | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 | |
https://github.com/simonw/datasette/pull/1893#issuecomment-1316135244 | https://api.github.com/repos/simonw/datasette/issues/1893 | 1316135244 | IC_kwDOBm6k_c5OcqFM | 9599 | 2022-11-16T01:21:41Z | 2022-11-16T01:21:41Z | OWNER | I just deployed a demo instance like this (using the commit hash from this PR): ```bash datasette publish vercel fixtures.db \ --branch 544f7025900b78f63c34b9985522271ba5fd9c0f \ --project datasette-pr-1893 \ --scope datasette \ --about 'PR 1893' \ --about_url https://github.com/simonw/datasette/pull/1893 ``` Here's the result: https://datasette-pr-1893.vercel.app/fixtures | { "total_count": 0, "+1": 0, "-1": 0, "laugh": 0, "hooray": 0, "confused": 0, "heart": 0, "rocket": 0, "eyes": 0 } |
1450363982 |