Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add partiql mode #4630

Merged
merged 2 commits into from Feb 18, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
68 changes: 68 additions & 0 deletions demo/kitchen-sink/docs/ion.ion
@@ -0,0 +1,68 @@
// Comment
/*
Multi
Line
Comment
*/
[1,2,3,45 /*TODO: should be 42, obviously*/, 2016-04-21T08:10:46Z, 2016-04-21T08:10:46-08:00, 2016-04-21, 2016, 0x5, 0b0110]
(5 7 1 3 [
'a', 'b',
null, null.int, null.bool, null.list
true, false,
nan, -inf, +inf,
"str",
"str with embedded \" ",
'''str with embedded \''' ''',
{{"clob content"}},
{{ AB/ }}
])

'''

multi
line
string

'''

states::{
// https://amzn.github.io/ion-docs/docs/spec.html
root: rules::[
include::'value'
],

// https://amzn.github.io/ion-docs/docs/spec.html#string
string: rules::[
match::{
regex: "(\\\")((?:\\\\\"|[^\"])*)(\\\")",
token: ['string.dblq.punc.start', 'string.dblq', 'string.dblq.punc.end']
},
push::{
regex: "\'{3}",
token: 'string.trpq.punc.start',
states: rules::[
pop::{
regex: "\'{3}",
token: 'string.trpq.punc.end',
},
match::{
regex: "(?:\\\\'*|.|[^']*)",
token: 'string.trpq'
}
]
},
],

/*
...
*/
}
{
"json": {
"compatibility": true,
"open sourced": "2016-04-21T08:10:46Z",
"foo": 9,
"bar": 1.1,
"baz": [{"id": 1}, {"id":2}]
}
}
62 changes: 62 additions & 0 deletions demo/kitchen-sink/docs/partiql.partiql
@@ -0,0 +1,62 @@
-- comment
/* multi
line
comment */

SELECT a, b, c FROM stuff s INNER CROSS JOIN @s WHERE f(s) -- comment
-- comment
SELECT "a", b FROM stuff s, @s WHERE f(s)

SELECT VALUE {'sensor': s.sensor,
'readings': (SELECT VALUE l.co
FROM logs as l
WHERE l.sensor = s.sensor
)
}
FROM sensors AS s

SELECT VALUE (PIVOT v AT g
FROM UNPIVOT r as v At g
WHERE g LIKE 'co%')
FROM sensors AS r


SELECT x.*
FROM [{'a':1, 'b':1}, {'a':2}, 'foo'] AS x

-- NOTE: the embedded ion values parse as ion (inside the backticks "`")
SELECT x.*
FROM `[{'a':1, 'b':1}, {'a':2}, "foo"]` AS x

SELECT VALUE {v.a: v.b, v.c: v.d}
FROM <<{'a':'same', 'b':1, 'c':'same', 'd':2}>> AS v

SELECT u.id, feedbackId, commentId, upvoteId
FROM users as u, u.feedbacks as feedback at feedbackId
LEFT CROSS JOIN feedback.comments as comment AT commentId
LEFT CROSS JOIN UNPIVOT comment.upvotes as upvote at upvoteId


SELECT (
SELECT numRec, tabulated
FROM committed.changes changes,
(SELECT u.id, feedbackId, commentId, upvoteId
FROM changes.tabulated as u,
u.feedbacks as feedback at feedbackId LEFT CROSS JOIN feedback.comments as comment AT commentId
LEFT CROSS JOIN UNPIVOT comment.upvotes as upvote at upvoteId
) as tabulated,
changes.numRec as numRec
)
AS changes
FROM incoming_committed committed

SELECT SUM(AVG(n)) FROM <<numbers, numbers>> AS n

SELECT VALUES v.a
FROM [{'a':1, 'b':true}, {'a':2, 'b':null}, {'a':3}] v
WHERE v.b

SELECT attributeId, COUNT(*) as the_count
FROM repeating_things
GROUP BY attributeId GROUP AS g
HAVING 1 = 0
2 changes: 2 additions & 0 deletions lib/ace/ext/modelist.js
Expand Up @@ -106,6 +106,7 @@ var supportedModes = {
HTML_Ruby: ["erb|rhtml|html.erb"],
INI: ["ini|conf|cfg|prefs"],
Io: ["io"],
Ion: ["ion"],
Jack: ["jack"],
Jade: ["jade|pug"],
Java: ["java"],
Expand Down Expand Up @@ -147,6 +148,7 @@ var supportedModes = {
Nunjucks: ["nunjucks|nunjs|nj|njk"],
ObjectiveC: ["m|mm"],
OCaml: ["ml|mli"],
PartiQL: ["partiql|pql"],
Pascal: ["pas|p"],
Perl: ["pl|pm"],
pgSQL: ["pgsql"],
Expand Down