diff --git a/node_modules/drizzle-orm/.bun-tag-36446a2521398ee8 b/.bun-tag-36446a2521398ee8 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/node_modules/drizzle-orm/.bun-tag-9fae835e61d5cc75 b/.bun-tag-9fae835e61d5cc75 new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/pg-core/query-builders/select.d.cts b/pg-core/query-builders/select.d.cts index b968ebb3f563f37c8c36221dd17cc6f3603270ec..3fda6d0a97997f6bd07ec6a0c83397c0fdd2e97e 100644 --- a/pg-core/query-builders/select.d.cts +++ b/pg-core/query-builders/select.d.cts @@ -98,7 +98,16 @@ export declare abstract class PgSelectQueryBuilderBase; + leftJoin: PgSelectJoinFn; + /** + * For each row of the table, include + * values from a matching row of the joined + * subquery, if there is a matching row. If not, + * all of the columns of the joined subquery + * will be set to null. The lateral keyword allows + * access to columns after the FROM statement. + */ + leftJoinLateral: PgSelectJoinFn; /** * Executes a `right join` operation by adding another table to the current query. * @@ -126,7 +135,7 @@ export declare abstract class PgSelectQueryBuilderBase; + rightJoin: PgSelectJoinFn; /** * Executes an `inner join` operation, creating a new table by combining rows from two tables that have matching values. * @@ -154,7 +163,14 @@ export declare abstract class PgSelectQueryBuilderBase; + innerJoin: PgSelectJoinFn; + /** + * For each row of the table, the joined subquery + * needs to have a matching row, or it will + * be excluded from results. The lateral keyword allows + * access to columns after the FROM statement. + */ + innerJoinLateral: PgSelectJoinFn; /** * Executes a `full join` operation by combining rows from two tables into a new table. * @@ -182,7 +198,7 @@ export declare abstract class PgSelectQueryBuilderBase; + fullJoin: PgSelectJoinFn; private createSetOperator; /** * Adds `union` set operator to the query. diff --git a/pg-core/query-builders/select.d.ts b/pg-core/query-builders/select.d.ts index d44256289ffe7bd19d3f3af98cbd9ba0fc7efc57..f106eb28a919e0182f833632ace36ea7f87f9a88 100644 --- a/pg-core/query-builders/select.d.ts +++ b/pg-core/query-builders/select.d.ts @@ -98,7 +98,16 @@ export declare abstract class PgSelectQueryBuilderBase; + leftJoin: PgSelectJoinFn; + /** + * For each row of the table, include + * values from a matching row of the joined + * subquery, if there is a matching row. If not, + * all of the columns of the joined subquery + * will be set to null. The lateral keyword allows + * access to columns after the FROM statement. + */ + leftJoinLateral: PgSelectJoinFn; /** * Executes a `right join` operation by adding another table to the current query. * @@ -126,7 +135,7 @@ export declare abstract class PgSelectQueryBuilderBase; + rightJoin: PgSelectJoinFn; /** * Executes an `inner join` operation, creating a new table by combining rows from two tables that have matching values. * @@ -154,7 +163,14 @@ export declare abstract class PgSelectQueryBuilderBase; + innerJoin: PgSelectJoinFn; + /** + * For each row of the table, the joined subquery + * needs to have a matching row, or it will + * be excluded from results. The lateral keyword allows + * access to columns after the FROM statement. + */ + innerJoinLateral: PgSelectJoinFn; /** * Executes a `full join` operation by combining rows from two tables into a new table. * @@ -182,7 +198,7 @@ export declare abstract class PgSelectQueryBuilderBase; + fullJoin: PgSelectJoinFn; private createSetOperator; /** * Adds `union` set operator to the query. diff --git a/pg-core/query-builders/select.js b/pg-core/query-builders/select.js index e54406fcaf68ccfdaf32c8945d4d432212c4cf3f..5c514132f30366ee600b9530c284932d54f481f3 100644 --- a/pg-core/query-builders/select.js +++ b/pg-core/query-builders/select.js @@ -98,7 +98,7 @@ class PgSelectQueryBuilderBase extends TypedQueryBuilder { this.tableName = getTableLikeName(table); this.joinsNotNullableMap = typeof this.tableName === "string" ? { [this.tableName]: true } : {}; } - createJoin(joinType) { + createJoin(joinType, lateral = false) { return (table, on) => { const baseTableName = this.tableName; const tableName = getTableLikeName(table); @@ -127,7 +127,7 @@ class PgSelectQueryBuilderBase extends TypedQueryBuilder { if (!this.config.joins) { this.config.joins = []; } - this.config.joins.push({ on, table, joinType, alias: tableName }); + this.config.joins.push({ on, table, joinType, alias: tableName, lateral }); if (typeof tableName === "string") { switch (joinType) { case "left": { @@ -185,6 +185,15 @@ class PgSelectQueryBuilderBase extends TypedQueryBuilder { * ``` */ leftJoin = this.createJoin("left"); + /** + * For each row of the table, include + * values from a matching row of the joined + * subquery, if there is a matching row. If not, + * all of the columns of the joined subquery + * will be set to null. The lateral keyword allows + * access to columns after the FROM statement. + */ + leftJoinLateral = this.createJoin("left", true); /** * Executes a `right join` operation by adding another table to the current query. * @@ -241,6 +250,13 @@ class PgSelectQueryBuilderBase extends TypedQueryBuilder { * ``` */ innerJoin = this.createJoin("inner"); + /** + * For each row of the table, the joined subquery + * needs to have a matching row, or it will + * be excluded from results. The lateral keyword allows + * access to columns after the FROM statement. + */ + innerJoinLateral = this.createJoin("inner", true); /** * Executes a `full join` operation by combining rows from two tables into a new table. *