home / github

Menu
  • Search all tables
  • GraphQL API

issue_comments

Table actions
  • GraphQL API for issue_comments

6 rows where author_association = "OWNER", issue = 541331755 and user = 9599 sorted by updated_at descending

✖
✖
✖
✖

✎ View and edit SQL

This data as json, CSV (advanced)

Suggested facets: reactions, created_at (date), updated_at (date)

user 1

  • simonw · 6 ✖

issue 1

  • allow leading comments in SQL input field · 6 ✖

author_association 1

  • OWNER · 6 ✖
id html_url issue_url node_id user created_at updated_at ▲ author_association body reactions issue performed_via_github_app
582211745 https://github.com/simonw/datasette/pull/653#issuecomment-582211745 https://api.github.com/repos/simonw/datasette/issues/653 MDEyOklzc3VlQ29tbWVudDU4MjIxMTc0NQ== simonw 9599 2020-02-05T02:28:05Z 2020-02-05T02:28:05Z OWNER

This is shipped in Datasette 0.35. Here's a demo of it working:

https://latest.datasette.io/fixtures?sql=--+this+is+a+comment%0D%0Aselect+*+from+%5B123_starts_with_digits%5D

Compare with https://v0-34.datasette.io/fixtures?sql=--+this+is+a+comment%0D%0Aselect+*+from+%5B123_starts_with_digits%5D which returned an error.

{
    "total_count": 1,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 1,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
allow leading comments in SQL input field 541331755  
582141626 https://github.com/simonw/datasette/pull/653#issuecomment-582141626 https://api.github.com/repos/simonw/datasette/issues/653 MDEyOklzc3VlQ29tbWVudDU4MjE0MTYyNg== simonw 9599 2020-02-04T22:13:31Z 2020-02-04T22:13:31Z OWNER

Looks like SQLite supports /* ... */ style comments as well. I don't think supporting those should be a requirement to land this though. https://www.sqlite.org/lang_comment.html

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
allow leading comments in SQL input field 541331755  
582141086 https://github.com/simonw/datasette/pull/653#issuecomment-582141086 https://api.github.com/repos/simonw/datasette/issues/653 MDEyOklzc3VlQ29tbWVudDU4MjE0MTA4Ng== simonw 9599 2020-02-04T22:12:00Z 2020-02-04T22:12:00Z OWNER

You may well be right there! Let's add a test that demonstrates it.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
allow leading comments in SQL input field 541331755  
582103856 https://github.com/simonw/datasette/pull/653#issuecomment-582103856 https://api.github.com/repos/simonw/datasette/issues/653 MDEyOklzc3VlQ29tbWVudDU4MjEwMzg1Ng== simonw 9599 2020-02-04T20:38:18Z 2020-02-04T20:38:18Z OWNER

We can probably solve this without a SQL parser though. Really all we care about here is that if the FIRST lines of the statement begin with -- we ignore them and only validate the statement starting from the first non-commented line. I think we can do that without single quoted strings causing us confusion.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
allow leading comments in SQL input field 541331755  
582101530 https://github.com/simonw/datasette/pull/653#issuecomment-582101530 https://api.github.com/repos/simonw/datasette/issues/653 MDEyOklzc3VlQ29tbWVudDU4MjEwMTUzMA== simonw 9599 2020-02-04T20:32:11Z 2020-02-04T20:32:11Z OWNER

This is the kind of problem that has made me think that Datasette would really benefit from including a smart SQLite-syntax SQL parser.

Writing one is a bit of a challenge though! There's an example (derived from SQLite SELECT statements) included in pyparsing here but I've not spent much time evaluating it: https://github.com/pyparsing/pyparsing/blob/master/examples/select_parser.py

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
allow leading comments in SQL input field 541331755  
582100643 https://github.com/simonw/datasette/pull/653#issuecomment-582100643 https://api.github.com/repos/simonw/datasette/issues/653 MDEyOklzc3VlQ29tbWVudDU4MjEwMDY0Mw== simonw 9599 2020-02-04T20:29:56Z 2020-02-04T20:29:56Z OWNER

I think there's one nasty edge-case here that we need to worry about: SQLite allows newlines inside of single quoted strings and I've actually started using that in quite a few places - it's great for embedding markdown in a string for example.

The way you're stripping comments right now splits on newlines and removes any lines that start with --. I believe that will mangle the following example:

```sql select '# Hello there

  • This is a list
  • of items

    And a link.' as demo_markdown ```
{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
allow leading comments in SQL input field 541331755  

Advanced export

JSON shape: default, array, newline-delimited, object

CSV options:

CREATE TABLE [issue_comments] (
   [html_url] TEXT,
   [issue_url] TEXT,
   [id] INTEGER PRIMARY KEY,
   [node_id] TEXT,
   [user] INTEGER REFERENCES [users]([id]),
   [created_at] TEXT,
   [updated_at] TEXT,
   [author_association] TEXT,
   [body] TEXT,
   [reactions] TEXT,
   [issue] INTEGER REFERENCES [issues]([id])
, [performed_via_github_app] TEXT);
CREATE INDEX [idx_issue_comments_issue]
                ON [issue_comments] ([issue]);
CREATE INDEX [idx_issue_comments_user]
                ON [issue_comments] ([user]);
Powered by Datasette · Queries took 414.414ms · About: github-to-sqlite
  • Sort ascending
  • Sort descending
  • Facet by this
  • Hide this column
  • Show all columns
  • Show not-blank rows