snapshot of https://github.com/sqlc-dev/sqlc.git (main, 2026-09-16; blobs > 131072B omitted)
Some checks failed
kotlin / test (push) Has been skipped
python / test (push) Has been skipped
typescript / test (push) Has been skipped
go / build darwin/amd64 (push) Has been cancelled
go / build linux/amd64 (push) Has been cancelled
go / build windows/amd64 (push) Has been cancelled
go / build darwin/arm64 (push) Has been cancelled
go / build linux/arm64 (push) Has been cancelled
go / build windows/arm64 (push) Has been cancelled
go / test (push) Has been cancelled
go / vuln_check (push) Has been cancelled
Some checks failed
kotlin / test (push) Has been skipped
python / test (push) Has been skipped
typescript / test (push) Has been skipped
go / build darwin/amd64 (push) Has been cancelled
go / build linux/amd64 (push) Has been cancelled
go / build windows/amd64 (push) Has been cancelled
go / build darwin/arm64 (push) Has been cancelled
go / build linux/arm64 (push) Has been cancelled
go / build windows/arm64 (push) Has been cancelled
go / test (push) Has been cancelled
go / vuln_check (push) Has been cancelled
This commit is contained in:
5
internal/endtoend/testdata/analyze_expressions/clickhouse/exec.json
vendored
Normal file
5
internal/endtoend/testdata/analyze_expressions/clickhouse/exec.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"command": "analyze",
|
||||
"args": ["--dialect", "clickhouse", "--schema", "schema.sql", "query.sql"],
|
||||
"contexts": ["base"]
|
||||
}
|
||||
2
internal/endtoend/testdata/analyze_expressions/clickhouse/fixture.sql
vendored
Normal file
2
internal/endtoend/testdata/analyze_expressions/clickhouse/fixture.sql
vendored
Normal file
@@ -0,0 +1,2 @@
|
||||
INSERT INTO events VALUES (1, 'signup', NULL, 9.5), (2, 'login', 'web', 0.5);
|
||||
INSERT INTO users VALUES (1, 'a@example.com');
|
||||
29
internal/endtoend/testdata/analyze_expressions/clickhouse/query.sql
vendored
Normal file
29
internal/endtoend/testdata/analyze_expressions/clickhouse/query.sql
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
-- name: Aggregates :one
|
||||
SELECT count() AS n, max(amount) AS top, sum(amount), min(tag) AS first_tag, uniq(name)
|
||||
FROM events;
|
||||
|
||||
-- name: Expressions :many
|
||||
SELECT id + 1 AS next_id, nullIf(name, '') AS maybe, coalesce(tag, 'none') AS tag_or_none,
|
||||
lower(name), toDate(now()) AS today, id > 1 AS big, if(id = 1, 'one', NULL) AS word
|
||||
FROM events;
|
||||
|
||||
-- name: LeftJoinDefaults :many
|
||||
SELECT e.id, e.name, u.email
|
||||
FROM events e
|
||||
LEFT JOIN users u ON u.id = e.id;
|
||||
|
||||
-- name: Positional :many
|
||||
SELECT id, name FROM events WHERE name = ? AND amount > ? AND tag = ?;
|
||||
|
||||
-- name: Named :many
|
||||
SELECT id, name FROM events
|
||||
WHERE name = sqlc.arg(name) AND tag = sqlc.narg(tag) AND (amount > sqlc.arg(amount) OR amount < sqlc.arg(amount));
|
||||
|
||||
-- name: Functions :many
|
||||
SELECT id FROM events WHERE lower(name) = ? AND id IN (?) AND toDate(now()) > ?;
|
||||
|
||||
-- name: Paging :many
|
||||
SELECT id FROM events ORDER BY id LIMIT ? OFFSET ?;
|
||||
|
||||
-- name: Projected :one
|
||||
SELECT ? AS echo, 'literal' AS lit;
|
||||
11
internal/endtoend/testdata/analyze_expressions/clickhouse/schema.sql
vendored
Normal file
11
internal/endtoend/testdata/analyze_expressions/clickhouse/schema.sql
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
CREATE TABLE events (
|
||||
id UInt64,
|
||||
name String,
|
||||
tag Nullable(String),
|
||||
amount Float64
|
||||
) ENGINE = MergeTree ORDER BY id;
|
||||
|
||||
CREATE TABLE users (
|
||||
id UInt64,
|
||||
email String
|
||||
) ENGINE = MergeTree ORDER BY id;
|
||||
342
internal/endtoend/testdata/analyze_expressions/clickhouse/stdout.json
vendored
Normal file
342
internal/endtoend/testdata/analyze_expressions/clickhouse/stdout.json
vendored
Normal file
@@ -0,0 +1,342 @@
|
||||
[
|
||||
{
|
||||
"name": "Aggregates",
|
||||
"cmd": ":one",
|
||||
"columns": [
|
||||
{
|
||||
"name": "n",
|
||||
"type": {
|
||||
"name": "uint64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "top",
|
||||
"type": {
|
||||
"name": "float64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "sum(amount)",
|
||||
"type": {
|
||||
"name": "float64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "first_tag",
|
||||
"type": {
|
||||
"name": "string",
|
||||
"nullable": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "uniq(name)",
|
||||
"type": {
|
||||
"name": "uint64"
|
||||
}
|
||||
}
|
||||
],
|
||||
"params": []
|
||||
},
|
||||
{
|
||||
"name": "Expressions",
|
||||
"cmd": ":many",
|
||||
"columns": [
|
||||
{
|
||||
"name": "next_id",
|
||||
"type": {
|
||||
"name": "uint64"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "maybe",
|
||||
"type": {
|
||||
"name": "string",
|
||||
"nullable": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "tag_or_none",
|
||||
"type": {
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "lower(name)",
|
||||
"type": {
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "today",
|
||||
"type": {
|
||||
"name": "date"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "big",
|
||||
"type": {
|
||||
"name": "uint8"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "word",
|
||||
"type": {
|
||||
"name": "string",
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"params": []
|
||||
},
|
||||
{
|
||||
"name": "LeftJoinDefaults",
|
||||
"cmd": ":many",
|
||||
"columns": [
|
||||
{
|
||||
"name": "id",
|
||||
"type": {
|
||||
"name": "uint64"
|
||||
},
|
||||
"table": "events"
|
||||
},
|
||||
{
|
||||
"name": "name",
|
||||
"type": {
|
||||
"name": "string"
|
||||
},
|
||||
"table": "events"
|
||||
},
|
||||
{
|
||||
"name": "email",
|
||||
"type": {
|
||||
"name": "string"
|
||||
},
|
||||
"table": "users"
|
||||
}
|
||||
],
|
||||
"params": []
|
||||
},
|
||||
{
|
||||
"name": "Positional",
|
||||
"cmd": ":many",
|
||||
"columns": [
|
||||
{
|
||||
"name": "id",
|
||||
"type": {
|
||||
"name": "uint64"
|
||||
},
|
||||
"table": "events"
|
||||
},
|
||||
{
|
||||
"name": "name",
|
||||
"type": {
|
||||
"name": "string"
|
||||
},
|
||||
"table": "events"
|
||||
}
|
||||
],
|
||||
"params": [
|
||||
{
|
||||
"number": 1,
|
||||
"column": {
|
||||
"name": "name",
|
||||
"type": {
|
||||
"name": "string"
|
||||
},
|
||||
"table": "events"
|
||||
}
|
||||
},
|
||||
{
|
||||
"number": 2,
|
||||
"column": {
|
||||
"name": "amount",
|
||||
"type": {
|
||||
"name": "float64"
|
||||
},
|
||||
"table": "events"
|
||||
}
|
||||
},
|
||||
{
|
||||
"number": 3,
|
||||
"column": {
|
||||
"name": "tag",
|
||||
"type": {
|
||||
"name": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"table": "events"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Named",
|
||||
"cmd": ":many",
|
||||
"columns": [
|
||||
{
|
||||
"name": "id",
|
||||
"type": {
|
||||
"name": "uint64"
|
||||
},
|
||||
"table": "events"
|
||||
},
|
||||
{
|
||||
"name": "name",
|
||||
"type": {
|
||||
"name": "string"
|
||||
},
|
||||
"table": "events"
|
||||
}
|
||||
],
|
||||
"params": [
|
||||
{
|
||||
"number": 1,
|
||||
"column": {
|
||||
"name": "name",
|
||||
"type": {
|
||||
"name": "string"
|
||||
},
|
||||
"table": "events"
|
||||
}
|
||||
},
|
||||
{
|
||||
"number": 2,
|
||||
"column": {
|
||||
"name": "tag",
|
||||
"type": {
|
||||
"name": "string",
|
||||
"nullable": true
|
||||
},
|
||||
"table": "events"
|
||||
}
|
||||
},
|
||||
{
|
||||
"number": 3,
|
||||
"column": {
|
||||
"name": "amount",
|
||||
"type": {
|
||||
"name": "float64"
|
||||
},
|
||||
"table": "events"
|
||||
}
|
||||
},
|
||||
{
|
||||
"number": 4,
|
||||
"column": {
|
||||
"name": "amount",
|
||||
"type": {
|
||||
"name": "float64"
|
||||
},
|
||||
"table": "events"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Functions",
|
||||
"cmd": ":many",
|
||||
"columns": [
|
||||
{
|
||||
"name": "id",
|
||||
"type": {
|
||||
"name": "uint64"
|
||||
},
|
||||
"table": "events"
|
||||
}
|
||||
],
|
||||
"params": [
|
||||
{
|
||||
"number": 1,
|
||||
"column": {
|
||||
"name": "lower",
|
||||
"type": {
|
||||
"name": "string"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"number": 2,
|
||||
"column": {
|
||||
"name": "id",
|
||||
"type": {
|
||||
"name": "uint64"
|
||||
},
|
||||
"table": "events"
|
||||
}
|
||||
},
|
||||
{
|
||||
"number": 3,
|
||||
"column": {
|
||||
"name": "toDate",
|
||||
"type": {
|
||||
"name": "date"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Paging",
|
||||
"cmd": ":many",
|
||||
"columns": [
|
||||
{
|
||||
"name": "id",
|
||||
"type": {
|
||||
"name": "uint64"
|
||||
},
|
||||
"table": "events"
|
||||
}
|
||||
],
|
||||
"params": [
|
||||
{
|
||||
"number": 1,
|
||||
"column": {
|
||||
"name": "",
|
||||
"type": {
|
||||
"name": "uint64"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"number": 2,
|
||||
"column": {
|
||||
"name": "",
|
||||
"type": {
|
||||
"name": "uint64"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "Projected",
|
||||
"cmd": ":one",
|
||||
"columns": [
|
||||
{
|
||||
"name": "echo",
|
||||
"type": {
|
||||
"name": "nothing",
|
||||
"nullable": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "lit",
|
||||
"type": {
|
||||
"name": "string"
|
||||
}
|
||||
}
|
||||
],
|
||||
"params": [
|
||||
{
|
||||
"number": 1,
|
||||
"column": {
|
||||
"name": "echo",
|
||||
"type": {
|
||||
"name": "nothing",
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
5
internal/endtoend/testdata/analyze_expressions/sqlite/exec.json
vendored
Normal file
5
internal/endtoend/testdata/analyze_expressions/sqlite/exec.json
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"command": "analyze",
|
||||
"args": ["--dialect", "sqlite", "--schema", "schema.sql", "query.sql"],
|
||||
"contexts": ["base"]
|
||||
}
|
||||
4
internal/endtoend/testdata/analyze_expressions/sqlite/fixture.sql
vendored
Normal file
4
internal/endtoend/testdata/analyze_expressions/sqlite/fixture.sql
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
INSERT INTO users (id, name, bio, score) VALUES (1, 'ann', NULL, 1.5);
|
||||
INSERT INTO users (id, name, bio, score) VALUES (2, 'bob', 'hello', 2.5);
|
||||
INSERT INTO posts (id, user_id, title, created) VALUES (1, 1, 'first', '2024-01-01');
|
||||
INSERT INTO posts (id, user_id, title, created) VALUES (2, 1, NULL, '2024-01-02');
|
||||
23
internal/endtoend/testdata/analyze_expressions/sqlite/query.sql
vendored
Normal file
23
internal/endtoend/testdata/analyze_expressions/sqlite/query.sql
vendored
Normal file
@@ -0,0 +1,23 @@
|
||||
-- name: PostStats :one
|
||||
SELECT count(*) AS total, max(id) AS latest, min(created) AS first
|
||||
FROM posts WHERE user_id = ?;
|
||||
|
||||
-- name: UserScores :one
|
||||
SELECT avg(score) AS mean, sum(score) AS sum, sum(id) AS ids, group_concat(name) AS names
|
||||
FROM users;
|
||||
|
||||
-- name: ListUsers :many
|
||||
SELECT id, lower(name) AS lname, id + 1 AS next
|
||||
FROM users WHERE id IN (?, ?);
|
||||
|
||||
-- name: ListPosts :many
|
||||
SELECT id, title FROM posts ORDER BY created LIMIT ? OFFSET ?;
|
||||
|
||||
-- name: UserPosts :many
|
||||
SELECT u.name, p.title, p.created
|
||||
FROM users u LEFT JOIN posts p ON p.user_id = u.id
|
||||
WHERE u.name LIKE ? || '%';
|
||||
|
||||
-- name: CreatePost :one
|
||||
INSERT INTO posts (user_id, title, created) VALUES (?, ?, datetime('now'))
|
||||
RETURNING id, created;
|
||||
15
internal/endtoend/testdata/analyze_expressions/sqlite/schema.sql
vendored
Normal file
15
internal/endtoend/testdata/analyze_expressions/sqlite/schema.sql
vendored
Normal file
@@ -0,0 +1,15 @@
|
||||
CREATE TABLE users (
|
||||
id INTEGER PRIMARY KEY,
|
||||
name TEXT NOT NULL,
|
||||
bio TEXT,
|
||||
score REAL NOT NULL DEFAULT 0
|
||||
);
|
||||
|
||||
CREATE TABLE posts (
|
||||
id INTEGER PRIMARY KEY,
|
||||
user_id INTEGER NOT NULL REFERENCES users(id),
|
||||
title TEXT,
|
||||
created TEXT NOT NULL
|
||||
);
|
||||
|
||||
CREATE INDEX posts_user ON posts(user_id);
|
||||
245
internal/endtoend/testdata/analyze_expressions/sqlite/stdout.json
vendored
Normal file
245
internal/endtoend/testdata/analyze_expressions/sqlite/stdout.json
vendored
Normal file
@@ -0,0 +1,245 @@
|
||||
[
|
||||
{
|
||||
"name": "PostStats",
|
||||
"cmd": ":one",
|
||||
"columns": [
|
||||
{
|
||||
"name": "total",
|
||||
"type": {
|
||||
"name": "integer"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "latest",
|
||||
"type": {
|
||||
"name": "integer",
|
||||
"nullable": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "first",
|
||||
"type": {
|
||||
"name": "text",
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"params": [
|
||||
{
|
||||
"number": 1,
|
||||
"column": {
|
||||
"name": "user_id",
|
||||
"type": {
|
||||
"name": "integer"
|
||||
},
|
||||
"table": "posts"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "UserScores",
|
||||
"cmd": ":one",
|
||||
"columns": [
|
||||
{
|
||||
"name": "mean",
|
||||
"type": {
|
||||
"name": "real",
|
||||
"nullable": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "sum",
|
||||
"type": {
|
||||
"name": "real",
|
||||
"nullable": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "ids",
|
||||
"type": {
|
||||
"name": "integer",
|
||||
"nullable": true
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "names",
|
||||
"type": {
|
||||
"name": "text",
|
||||
"nullable": true
|
||||
}
|
||||
}
|
||||
],
|
||||
"params": []
|
||||
},
|
||||
{
|
||||
"name": "ListUsers",
|
||||
"cmd": ":many",
|
||||
"columns": [
|
||||
{
|
||||
"name": "id",
|
||||
"type": {
|
||||
"name": "integer"
|
||||
},
|
||||
"table": "users"
|
||||
},
|
||||
{
|
||||
"name": "lname",
|
||||
"type": {
|
||||
"name": "text"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "next",
|
||||
"type": {
|
||||
"name": "integer"
|
||||
}
|
||||
}
|
||||
],
|
||||
"params": [
|
||||
{
|
||||
"number": 1,
|
||||
"column": {
|
||||
"name": "id",
|
||||
"type": {
|
||||
"name": "integer"
|
||||
},
|
||||
"table": "users"
|
||||
}
|
||||
},
|
||||
{
|
||||
"number": 2,
|
||||
"column": {
|
||||
"name": "id",
|
||||
"type": {
|
||||
"name": "integer"
|
||||
},
|
||||
"table": "users"
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "ListPosts",
|
||||
"cmd": ":many",
|
||||
"columns": [
|
||||
{
|
||||
"name": "id",
|
||||
"type": {
|
||||
"name": "integer"
|
||||
},
|
||||
"table": "posts"
|
||||
},
|
||||
{
|
||||
"name": "title",
|
||||
"type": {
|
||||
"name": "text",
|
||||
"nullable": true
|
||||
},
|
||||
"table": "posts"
|
||||
}
|
||||
],
|
||||
"params": [
|
||||
{
|
||||
"number": 1,
|
||||
"column": {
|
||||
"name": "",
|
||||
"type": {
|
||||
"name": "integer"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"number": 2,
|
||||
"column": {
|
||||
"name": "",
|
||||
"type": {
|
||||
"name": "integer"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "UserPosts",
|
||||
"cmd": ":many",
|
||||
"columns": [
|
||||
{
|
||||
"name": "name",
|
||||
"type": {
|
||||
"name": "text"
|
||||
},
|
||||
"table": "users"
|
||||
},
|
||||
{
|
||||
"name": "title",
|
||||
"type": {
|
||||
"name": "text",
|
||||
"nullable": true
|
||||
},
|
||||
"table": "posts"
|
||||
},
|
||||
{
|
||||
"name": "created",
|
||||
"type": {
|
||||
"name": "text"
|
||||
},
|
||||
"table": "posts"
|
||||
}
|
||||
],
|
||||
"params": [
|
||||
{
|
||||
"number": 1,
|
||||
"column": {
|
||||
"name": "",
|
||||
"type": {
|
||||
"name": "text"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "CreatePost",
|
||||
"cmd": ":one",
|
||||
"columns": [
|
||||
{
|
||||
"name": "id",
|
||||
"type": {
|
||||
"name": "integer"
|
||||
},
|
||||
"table": "posts"
|
||||
},
|
||||
{
|
||||
"name": "created",
|
||||
"type": {
|
||||
"name": "text"
|
||||
},
|
||||
"table": "posts"
|
||||
}
|
||||
],
|
||||
"params": [
|
||||
{
|
||||
"number": 1,
|
||||
"column": {
|
||||
"name": "user_id",
|
||||
"type": {
|
||||
"name": "integer"
|
||||
},
|
||||
"table": "posts"
|
||||
}
|
||||
},
|
||||
{
|
||||
"number": 2,
|
||||
"column": {
|
||||
"name": "title",
|
||||
"type": {
|
||||
"name": "text",
|
||||
"nullable": true
|
||||
},
|
||||
"table": "posts"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
Reference in New Issue
Block a user