From 9db7a2fa2f7bc963fbbebe2a6784c82904afd2ac Mon Sep 17 00:00:00 2001 From: Huliiiii <134658521+Huliiiiii@users.noreply.github.com> Date: Mon, 1 Sep 2025 09:04:11 +0800 Subject: [PATCH 1/3] Add pseudo tables --- src/backend/query_builder.rs | 13 +++++++++++++ src/types/iden/compound.rs | 11 +++++++++++ 2 files changed, 24 insertions(+) diff --git a/src/backend/query_builder.rs b/src/backend/query_builder.rs index b91cfb1b4..6f6dd7ba9 100644 --- a/src/backend/query_builder.rs +++ b/src/backend/query_builder.rs @@ -657,6 +657,19 @@ pub trait QueryBuilder: } sql.write_str("*").unwrap(); } + ColumnRef::New(column) => { + sql.write_str("NEW.").unwrap(); + self.prepare_iden(column, sql); + } + ColumnRef::Old(column) => { + sql.write_str("OLD.").unwrap(); + self.prepare_iden(column, sql); + } + #[cfg(feature = "backend-postgres")] + ColumnRef::Excluded(column) => { + sql.write_str("excluded.").unwrap(); + self.prepare_iden(column, sql); + } } } diff --git a/src/types/iden/compound.rs b/src/types/iden/compound.rs index 7a49edb7b..81962b6fe 100644 --- a/src/types/iden/compound.rs +++ b/src/types/iden/compound.rs @@ -135,6 +135,13 @@ pub enum ColumnRef { Column(ColumnName), /// An `*` expression, potentially qualified as `(database.)(schema.)(table.)*`. Asterisk(Option), + /// NEW.* + New(DynIden), + /// Old.* + Old(DynIden), + #[cfg(feature = "backend-postgres")] + /// excluded.* + Excluded(DynIden), } impl ColumnRef { @@ -144,6 +151,10 @@ impl ColumnRef { match self { ColumnRef::Column(ColumnName(_table_ref, column_itself)) => Some(column_itself), ColumnRef::Asterisk(..) => None, + ColumnRef::New(column_itself) => Some(column_itself), + ColumnRef::Old(column_itself) => Some(column_itself), + #[cfg(feature = "backend-postgres")] + ColumnRef::Excluded(column_itself) => Some(column_itself), } } } From 7247472cf6eaf4accd2a79362c774ea4036b271f Mon Sep 17 00:00:00 2001 From: Huliiiii <134658521+Huliiiiii@users.noreply.github.com> Date: Tue, 2 Sep 2025 16:54:07 +0800 Subject: [PATCH 2/3] Tweak --- src/types/iden/compound.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/iden/compound.rs b/src/types/iden/compound.rs index 81962b6fe..f7c6fdd3d 100644 --- a/src/types/iden/compound.rs +++ b/src/types/iden/compound.rs @@ -137,7 +137,7 @@ pub enum ColumnRef { Asterisk(Option), /// NEW.* New(DynIden), - /// Old.* + /// OLD.* Old(DynIden), #[cfg(feature = "backend-postgres")] /// excluded.* From 094115529ebaf037e8e315681e1ffc181db23279 Mon Sep 17 00:00:00 2001 From: Huliiiii <134658521+Huliiiiii@users.noreply.github.com> Date: Tue, 2 Sep 2025 17:21:53 +0800 Subject: [PATCH 3/3] Fix --- src/types/iden/compound.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/types/iden/compound.rs b/src/types/iden/compound.rs index f7c6fdd3d..999346545 100644 --- a/src/types/iden/compound.rs +++ b/src/types/iden/compound.rs @@ -135,12 +135,12 @@ pub enum ColumnRef { Column(ColumnName), /// An `*` expression, potentially qualified as `(database.)(schema.)(table.)*`. Asterisk(Option), - /// NEW.* + /// NEW. New(DynIden), - /// OLD.* + /// OLD. Old(DynIden), #[cfg(feature = "backend-postgres")] - /// excluded.* + /// excluded. Excluded(DynIden), }