Skip to content
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.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
63 changes: 63 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,69 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## v2.48.0 - 2026-04-18

### Added

- linter: add require-table-schema rule (#1046, #1064, #1073). Thanks @Flaiers!

Note: this rule is disabled by default and must be enabled via the new
`--include` flag.

```sql
-- error
create table posts(id bigint);

-- okay
create table public.posts(id bigint);
```

- parser: improve error recovery for misplaced join clauses (#1065)

The following now gives a concise error message:

```sql
-- join after the where
select * from t
where x > 1
join k on true;
```

- parser: support more statement kinds in create schema parsing (#1061)

- ide: semantic syntax highlighting improvements (#1059, #1060, #1068)

We now highlight all the tokens in types. We were missing some like `setof`.

Additionally, we highlight names by their underlying kind i.e., table, function, column.
This is powered by goto def.

You can't tell from GitHub's highlighting, but if you use the language
server, we now highlight the `b` in `t.b` as a function:

```sql
create table t(a int);
create function b(t) returns int as 'select 1' language sql;
select b(t), t.b from t;
```

- ide: show function comment on hover (#1070)
- ide: code action to rewrite between != and <> (#1066)
- ide: goto def for create property graph (#1074)

### Fixed

- parser: fix param parsing (#1068)

Before, `double precision` was parsed as a param named `double` with type `precision`.
Now it's parsed correctly as an unnamed param of type `double precision`.

```sql
create function f(double precision) returns int8
as 'select $1'
language sql;
```

## v2.47.0 - 2026-04-13

### Added
Expand Down
24 changes: 12 additions & 12 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

18 changes: 9 additions & 9 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ members = ["crates/*"]
resolver = "2"

[workspace.package]
version = "2.47.0"
version = "2.48.0"
edition = "2024"
rust-version = "1.94"
authors = ["Squawk Team & Contributors"]
Expand Down Expand Up @@ -72,14 +72,14 @@ rustc-hash = "2.1.1"

# local
# we have to make the versions explicit otherwise `cargo publish` won't work
squawk-github = { path = "./crates/squawk_github", version = "2.47.0" }
squawk-ide = { path = "./crates/squawk_ide", version = "2.47.0" }
squawk-lexer = { path = "./crates/squawk_lexer", version = "2.47.0" }
squawk-parser = { path = "./crates/squawk_parser", version = "2.47.0" }
squawk-syntax = { path = "./crates/squawk_syntax", version = "2.47.0" }
squawk-linter = { path = "./crates/squawk_linter", version = "2.47.0" }
squawk-server = { path = "./crates/squawk_server", version = "2.47.0" }
squawk-thread = { path = "./crates/squawk_thread", version = "2.47.0" }
squawk-github = { path = "./crates/squawk_github", version = "2.48.0" }
squawk-ide = { path = "./crates/squawk_ide", version = "2.48.0" }
squawk-lexer = { path = "./crates/squawk_lexer", version = "2.48.0" }
squawk-parser = { path = "./crates/squawk_parser", version = "2.48.0" }
squawk-syntax = { path = "./crates/squawk_syntax", version = "2.48.0" }
squawk-linter = { path = "./crates/squawk_linter", version = "2.48.0" }
squawk-server = { path = "./crates/squawk_server", version = "2.48.0" }
squawk-thread = { path = "./crates/squawk_thread", version = "2.48.0" }

[workspace.lints.clippy]
collapsible_else_if = "allow"
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -265,7 +265,7 @@ to your project's `.pre-commit-config.yaml`:
```yaml
repos:
- repo: https://github.com/sbdchd/squawk
rev: 2.47.0
rev: 2.48.0
hooks:
- id: squawk
files: path/to/postgres/migrations/written/in/sql
Expand Down
2 changes: 1 addition & 1 deletion crates/squawk_github/src/app.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ use serde_json::Value;
use std::time::Duration;
use std::time::{SystemTime, UNIX_EPOCH};

pub(crate) const SQUAWK_USER_AGENT: &str = "squawk/2.47.0";
pub(crate) const SQUAWK_USER_AGENT: &str = "squawk/2.48.0";

#[derive(Debug, Serialize)]
struct CommentBody {
Expand Down
2 changes: 1 addition & 1 deletion flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
{
squawk = final.rustPlatform.buildRustPackage {
pname = "squawk";
version = "2.47.0";
version = "2.48.0";

cargoLock = {
lockFile = ./Cargo.lock;
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "squawk-cli",
"version": "2.47.0",
"version": "2.48.0",
"description": "linter for PostgreSQL, focused on migrations",
"repository": "git@github.com:sbdchd/squawk.git",
"author": "Squawk Team & Contributors",
Expand Down
2 changes: 1 addition & 1 deletion squawk-vscode/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
"icon": "icon.png",
"author": "Squawk Team & Contributors",
"license": "(Apache-2.0 OR MIT)",
"version": "2.47.0",
"version": "2.48.0",
"engines": {
"vscode": "^1.101.0"
},
Expand Down
Loading