Skip to content

Commit e45644c

Browse files
adamnemecekpre-commit-ci[bot]max-sixtyclaude
authored
feat: Added support for read_json for duckdb and clickhouse (#5608)
Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Maximilian Roos <m@maxroos.com> Co-authored-by: Claude <noreply@anthropic.com>
1 parent d5e02d9 commit e45644c

File tree

55 files changed

+3194
-3007
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+3194
-3007
lines changed

grammars/CotEditor/PRQL.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ commands:
4343
- beginString: stddev
4444
- beginString: sum
4545
- beginString: read_csv
46+
- beginString: read_json
4647
- beginString: read_parquet
4748
- beginString: all
4849
- beginString: map

grammars/GtkSourceView/prql.lang

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@
112112

113113
<context id="file-reading-functions" style-ref="function">
114114
<keyword>read_csv</keyword>
115+
<keyword>read_json</keyword>
115116
<keyword>read_parquet</keyword>
116117
</context>
117118

prqlc/bindings/prqlc-python/src/lib.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -232,15 +232,15 @@ mod test {
232232
fn debug_prql_lineage() {
233233
assert_snapshot!(
234234
debug::prql_lineage(r#"from a | select { beta, gamma }"#).unwrap(),
235-
@r#"{"frames":[["1:9-31",{"columns":[{"Single":{"name":["a","beta"],"target_id":117,"target_name":null}},{"Single":{"name":["a","gamma"],"target_id":118,"target_name":null}}],"inputs":[{"id":115,"name":"a","table":["default_db","a"]}]}]],"nodes":[{"id":115,"kind":"Ident","span":"1:0-6","ident":{"Ident":["default_db","a"]},"parent":120},{"id":117,"kind":"Ident","span":"1:18-22","ident":{"Ident":["this","a","beta"]},"targets":[115],"parent":119},{"id":118,"kind":"Ident","span":"1:24-29","ident":{"Ident":["this","a","gamma"]},"targets":[115],"parent":119},{"id":119,"kind":"Tuple","span":"1:16-31","children":[117,118],"parent":120},{"id":120,"kind":"TransformCall: Select","span":"1:9-31","children":[115,119]}],"ast":{"name":"Project","stmts":[{"VarDef":{"kind":"Main","name":"main","value":{"Pipeline":{"exprs":[{"FuncCall":{"name":{"Ident":["from"],"span":"1:0-4"},"args":[{"Ident":["a"],"span":"1:5-6"}]},"span":"1:0-6"},{"FuncCall":{"name":{"Ident":["select"],"span":"1:9-15"},"args":[{"Tuple":[{"Ident":["beta"],"span":"1:18-22"},{"Ident":["gamma"],"span":"1:24-29"}],"span":"1:16-31"}]},"span":"1:9-31"}]},"span":"1:0-31"}},"span":"1:0-31"}]}}"#
235+
@r#"{"frames":[["1:9-31",{"columns":[{"Single":{"name":["a","beta"],"target_id":118,"target_name":null}},{"Single":{"name":["a","gamma"],"target_id":119,"target_name":null}}],"inputs":[{"id":116,"name":"a","table":["default_db","a"]}]}]],"nodes":[{"id":116,"kind":"Ident","span":"1:0-6","ident":{"Ident":["default_db","a"]},"parent":121},{"id":118,"kind":"Ident","span":"1:18-22","ident":{"Ident":["this","a","beta"]},"targets":[116],"parent":120},{"id":119,"kind":"Ident","span":"1:24-29","ident":{"Ident":["this","a","gamma"]},"targets":[116],"parent":120},{"id":120,"kind":"Tuple","span":"1:16-31","children":[118,119],"parent":121},{"id":121,"kind":"TransformCall: Select","span":"1:9-31","children":[116,120]}],"ast":{"name":"Project","stmts":[{"VarDef":{"kind":"Main","name":"main","value":{"Pipeline":{"exprs":[{"FuncCall":{"name":{"Ident":["from"],"span":"1:0-4"},"args":[{"Ident":["a"],"span":"1:5-6"}]},"span":"1:0-6"},{"FuncCall":{"name":{"Ident":["select"],"span":"1:9-15"},"args":[{"Tuple":[{"Ident":["beta"],"span":"1:18-22"},{"Ident":["gamma"],"span":"1:24-29"}],"span":"1:16-31"}]},"span":"1:9-31"}]},"span":"1:0-31"}},"span":"1:0-31"}]}}"#
236236
);
237237
}
238238

239239
#[test]
240240
fn debug_pl_to_lineage() {
241241
assert_snapshot!(
242242
prql_to_pl(r#"from a | select { beta, gamma }"#).and_then(|x| debug::pl_to_lineage(&x)).unwrap(),
243-
@r#"{"frames":[["1:9-31",{"columns":[{"Single":{"name":["a","beta"],"target_id":117,"target_name":null}},{"Single":{"name":["a","gamma"],"target_id":118,"target_name":null}}],"inputs":[{"id":115,"name":"a","table":["default_db","a"]}]}]],"nodes":[{"id":115,"kind":"Ident","span":"1:0-6","ident":{"Ident":["default_db","a"]},"parent":120},{"id":117,"kind":"Ident","span":"1:18-22","ident":{"Ident":["this","a","beta"]},"targets":[115],"parent":119},{"id":118,"kind":"Ident","span":"1:24-29","ident":{"Ident":["this","a","gamma"]},"targets":[115],"parent":119},{"id":119,"kind":"Tuple","span":"1:16-31","children":[117,118],"parent":120},{"id":120,"kind":"TransformCall: Select","span":"1:9-31","children":[115,119]}],"ast":{"name":"Project","stmts":[{"VarDef":{"kind":"Main","name":"main","value":{"Pipeline":{"exprs":[{"FuncCall":{"name":{"Ident":["from"],"span":"1:0-4"},"args":[{"Ident":["a"],"span":"1:5-6"}]},"span":"1:0-6"},{"FuncCall":{"name":{"Ident":["select"],"span":"1:9-15"},"args":[{"Tuple":[{"Ident":["beta"],"span":"1:18-22"},{"Ident":["gamma"],"span":"1:24-29"}],"span":"1:16-31"}]},"span":"1:9-31"}]},"span":"1:0-31"}},"span":"1:0-31"}]}}"#
243+
@r#"{"frames":[["1:9-31",{"columns":[{"Single":{"name":["a","beta"],"target_id":118,"target_name":null}},{"Single":{"name":["a","gamma"],"target_id":119,"target_name":null}}],"inputs":[{"id":116,"name":"a","table":["default_db","a"]}]}]],"nodes":[{"id":116,"kind":"Ident","span":"1:0-6","ident":{"Ident":["default_db","a"]},"parent":121},{"id":118,"kind":"Ident","span":"1:18-22","ident":{"Ident":["this","a","beta"]},"targets":[116],"parent":120},{"id":119,"kind":"Ident","span":"1:24-29","ident":{"Ident":["this","a","gamma"]},"targets":[116],"parent":120},{"id":120,"kind":"Tuple","span":"1:16-31","children":[118,119],"parent":121},{"id":121,"kind":"TransformCall: Select","span":"1:9-31","children":[116,120]}],"ast":{"name":"Project","stmts":[{"VarDef":{"kind":"Main","name":"main","value":{"Pipeline":{"exprs":[{"FuncCall":{"name":{"Ident":["from"],"span":"1:0-4"},"args":[{"Ident":["a"],"span":"1:5-6"}]},"span":"1:0-6"},{"FuncCall":{"name":{"Ident":["select"],"span":"1:9-15"},"args":[{"Tuple":[{"Ident":["beta"],"span":"1:18-22"},{"Ident":["gamma"],"span":"1:24-29"}],"span":"1:16-31"}]},"span":"1:9-31"}]},"span":"1:0-31"}},"span":"1:0-31"}]}}"#
244244
);
245245
}
246246
}

prqlc/prqlc/src/cli/test.rs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -434,61 +434,61 @@ fn debug() {
434434
name:
435435
- tracks
436436
- artist
437-
target_id: 117
437+
target_id: 118
438438
target_name: null
439439
- !Single
440440
name:
441441
- tracks
442442
- album
443-
target_id: 118
443+
target_id: 119
444444
target_name: null
445445
inputs:
446-
- id: 115
446+
- id: 116
447447
name: tracks
448448
table:
449449
- default_db
450450
- tracks
451451
nodes:
452-
- id: 115
452+
- id: 116
453453
kind: Ident
454454
span: 1:0-11
455455
ident: !Ident
456456
- default_db
457457
- tracks
458-
parent: 120
459-
- id: 117
458+
parent: 121
459+
- id: 118
460460
kind: Ident
461461
span: 1:22-28
462462
ident: !Ident
463463
- this
464464
- tracks
465465
- artist
466466
targets:
467-
- 115
468-
parent: 119
469-
- id: 118
467+
- 116
468+
parent: 120
469+
- id: 119
470470
kind: Ident
471471
span: 1:30-35
472472
ident: !Ident
473473
- this
474474
- tracks
475475
- album
476476
targets:
477-
- 115
478-
parent: 119
479-
- id: 119
477+
- 116
478+
parent: 120
479+
- id: 120
480480
kind: Tuple
481481
span: 1:21-36
482482
children:
483-
- 117
484483
- 118
485-
parent: 120
486-
- id: 120
484+
- 119
485+
parent: 121
486+
- id: 121
487487
kind: 'TransformCall: Select'
488488
span: 1:14-36
489489
children:
490-
- 115
491-
- 119
490+
- 116
491+
- 120
492492
ast:
493493
name: Project
494494
stmts:

prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__test__append_union_different_tables.snap

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,27 @@
11
---
22
source: prqlc/prqlc/src/semantic/resolver/mod.rs
3-
assertion_line: 234
43
expression: final_lineage
54
---
65
columns:
76
- Single:
87
name:
98
- employees
109
- name
11-
target_id: 131
10+
target_id: 132
1211
target_name: ~
1312
- Single:
1413
name:
1514
- employees
1615
- salary
17-
target_id: 132
16+
target_id: 133
1817
target_name: ~
1918
inputs:
20-
- id: 129
19+
- id: 130
2120
name: employees
2221
table:
2322
- default_db
2423
- employees
25-
- id: 118
24+
- id: 119
2625
name: managers
2726
table:
2827
- default_db

prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__test__frames_and_names-2.snap

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,18 @@ expression: "resolve_lineage(r#\"\n from table_1\n join cu
44
---
55
columns:
66
- All:
7-
input_id: 116
7+
input_id: 117
88
except: []
99
- All:
10-
input_id: 113
10+
input_id: 114
1111
except: []
1212
inputs:
13-
- id: 116
13+
- id: 117
1414
name: table_1
1515
table:
1616
- default_db
1717
- table_1
18-
- id: 113
18+
- id: 114
1919
name: customers
2020
table:
2121
- default_db

prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__test__frames_and_names-3.snap

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,26 @@ columns:
77
name:
88
- e
99
- emp_no
10-
target_id: 126
10+
target_id: 127
1111
target_name: ~
1212
- Single:
1313
name:
1414
- e
1515
- gender
16-
target_id: 127
16+
target_id: 128
1717
target_name: ~
1818
- Single:
1919
name:
2020
- emp_salary
21-
target_id: 145
21+
target_id: 146
2222
target_name: ~
2323
inputs:
24-
- id: 119
24+
- id: 120
2525
name: e
2626
table:
2727
- default_db
2828
- employees
29-
- id: 116
29+
- id: 117
3030
name: salaries
3131
table:
3232
- default_db

prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__test__frames_and_names.snap

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,26 @@ columns:
77
name:
88
- orders
99
- customer_no
10-
target_id: 120
10+
target_id: 121
1111
target_name: ~
1212
- Single:
1313
name:
1414
- orders
1515
- gross
16-
target_id: 121
16+
target_id: 122
1717
target_name: ~
1818
- Single:
1919
name:
2020
- orders
2121
- tax
22-
target_id: 122
22+
target_id: 123
2323
target_name: ~
2424
- Single:
2525
name: ~
26-
target_id: 123
26+
target_id: 124
2727
target_name: ~
2828
inputs:
29-
- id: 118
29+
- id: 119
3030
name: orders
3131
table:
3232
- default_db

prqlc/prqlc/src/semantic/resolver/snapshots/prqlc__semantic__resolver__transforms__tests__aggregate_positional_arg-2.snap

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ TransformCall:
2121
lineage:
2222
columns:
2323
- All:
24-
input_id: 115
24+
input_id: 116
2525
except: []
2626
inputs:
27-
- id: 115
27+
- id: 116
2828
name: c_invoice
2929
table:
3030
- default_db
@@ -94,14 +94,14 @@ lineage:
9494
name:
9595
- c_invoice
9696
- issued_at
97-
target_id: 117
97+
target_id: 118
9898
target_name: ~
9999
- Single:
100100
name: ~
101-
target_id: 133
101+
target_id: 134
102102
target_name: ~
103103
inputs:
104-
- id: 115
104+
- id: 116
105105
name: c_invoice
106106
table:
107107
- default_db

prqlc/prqlc/src/semantic/std.prql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -237,6 +237,7 @@ let read_parquet = func
237237
union_by_name <bool>:false
238238
-> <relation> internal std.read_parquet
239239
let read_csv = source<text> -> <relation> internal std.read_csv
240+
let read_json = source<text> -> <relation> internal std.read_json
240241

241242

242243
## PRQL compiler functions

0 commit comments

Comments
 (0)