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
84 changes: 84 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,90 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

## v2.50.0 - 2026-05-01

### Added

- linter: new rule: prefer-repack (#1105)

`repack` isn't out yet, coming in PG19, but when it's out:

```sql
-- instead of
cluster foo;
-- or
vacuum full foo;
-- use
repack (concurrently) foo;
```

- linter: new rule: require-concurrent-reindex (#1104)

```sql
-- instead of
reindex table foo;
-- use
reindex table concurrently foo;
```

- linter: new rule: require-concurrent-partition-detach (#1103)

```sql
-- instead of
alter table t detach partition p;
-- use
alter table t detach partition p concurrently;
```

- linter: new rule: identifier-too-long (#1102)

Postgres truncates identifiers that are too long, we now warn about this.

```sql
create table table_very_long_very_long_very_long_very_long_very_long_very_long (c bigint);
```

```
warning[identifier-too-long]: `table_very_long_very_long_very_long_very_long_very_long_very_long` is too long and will be truncated to 63 bytes.
╭▸ stdin:1:14
1 │ create table table_very_long_very_long_very_long_very_long_very_long_very_long (c bigint);
│ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
╭╴
1 - create table table_very_long_very_long_very_long_very_long_very_long_very_long (c bigint);
1 + create table table_very_long_very_long_very_long_very_long_very_long_very_lo (c bigint);
╰╴
```

Thanks @subnix for coming up with this idea!

- linter: parallel file checking (#1099)

We now check files in parallel using rayon, which gives a nice speed up of
22-55%.

- lexer/ide: fix lexing of non-ascii + fix case folding in goto def (#1101)

Previously we case folding all of the characters in our unquoted identifiers
including unicode. This differed from Postgres behavior which only folded ascii.

Now we correctly error instead of resolving in the following:

```sql
with t as (select 1 Äpfel)
select äpfel from t;
-- ^ goto def no longer resolves
```

Additionally fixed a bug in the lexer where we weren't lexing unicode identifiers.

For example, the following now lexes:

```sql
with t as (select 1 🦀)
select 🦀 from t;
```

## v2.49.0 - 2026-04-27

### 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.49.0"
version = "2.50.0"
edition = "2024"
rust-version = "1.94"
authors = ["Squawk Team & Contributors"]
Expand Down Expand Up @@ -78,14 +78,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.49.0" }
squawk-ide = { path = "./crates/squawk_ide", version = "2.49.0" }
squawk-lexer = { path = "./crates/squawk_lexer", version = "2.49.0" }
squawk-parser = { path = "./crates/squawk_parser", version = "2.49.0" }
squawk-syntax = { path = "./crates/squawk_syntax", version = "2.49.0" }
squawk-linter = { path = "./crates/squawk_linter", version = "2.49.0" }
squawk-server = { path = "./crates/squawk_server", version = "2.49.0" }
squawk-thread = { path = "./crates/squawk_thread", version = "2.49.0" }
squawk-github = { path = "./crates/squawk_github", version = "2.50.0" }
squawk-ide = { path = "./crates/squawk_ide", version = "2.50.0" }
squawk-lexer = { path = "./crates/squawk_lexer", version = "2.50.0" }
squawk-parser = { path = "./crates/squawk_parser", version = "2.50.0" }
squawk-syntax = { path = "./crates/squawk_syntax", version = "2.50.0" }
squawk-linter = { path = "./crates/squawk_linter", version = "2.50.0" }
squawk-server = { path = "./crates/squawk_server", version = "2.50.0" }
squawk-thread = { path = "./crates/squawk_thread", version = "2.50.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.49.0
rev: 2.50.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.49.0";
pub(crate) const SQUAWK_USER_AGENT: &str = "squawk/2.50.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.49.0";
version = "2.50.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.49.0",
"version": "2.50.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.49.0",
"version": "2.50.0",
"engines": {
"vscode": "^1.101.0"
},
Expand Down
Loading