drizzle-team / drizzle-team/drizzle-orm
[BUG]: AWS Data API error when getting relation with where clause
- Dominant language
- TypeScript
- Stars
- 35.8k
- Forks
- 1.6k
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 4
Description
### What version of `drizzle-orm` are you using?
^0.30.9
### What version of `drizzle-kit` are you using?
^0.21.2
### Describe the Bug
Currently, I'm trying to retrieve all the records of a table (trucks) where a relation in another table (truckAvailability) exists.
A simplified schema is as follows:
```ts
export const trucks = pgTable("trucks", {
id: serial("id").primaryKey(),
//...
});
export const truckRelations = relations(trucks, ({ one, many }) => ({
//...
availabilities: many(truckAvailability),
}));
export const truckAvailability = pgTable("truck_availability", {
id: serial("id").primaryKey(),
truckId: integer("truck_id")
.references(() => trucks.id)
.notNull(),
available: boolean("available").notNull().default(true),
//...
});
export const truckAvailabilityRelations = relations(truckAvailability, ({ one }) => ({
truck: one(trucks, { fields: [truckAvailability.truckId], references: [trucks.id] }),
//...
}));
```
Running a query where I findMany trucks with the availabilities relation where available is true, returns the following error:
```
TypeError: Cannot read properties of undefined (reading 'map')
at mapColumnsInSQLToAlias (/var/task/node_modules/drizzle-orm/alias.cjs:120:48)
at AwsPgDialect.buildRelationalQueryWithoutPK (/var/task/node_modules/drizzle-orm/pg-core/dialect.cjs:906:69)
at AwsPgDialect.buildRelationalQueryWithoutPK (/var/task/node_modules/drizzle-orm/pg-core/dialect.cjs:986:36)
at QueryPromise._getQuery (/var/task/node_modules/drizzle-orm/pg-core/query-builders/query.cjs:106:25)
at QueryPromise._toSQL (/var/task/node_modules/drizzle-orm/pg-core/query-builders/query.cjs:121:24)
at /var/task/node_modules/drizzle-orm/pg-core/query-builders/query.cjs:84:42
at Object.startActiveSpan (/var/task/node_modules/drizzle-orm/tracing.cjs:31:14)
at QueryPromise._prepare (/var/task/node_modules/drizzle-orm/pg-core/query-builders/query.cjs:83:34)
at /var/task/node_modules/drizzle-orm/pg-core/query-builders/query.cjs:130:19
at Object.startActiveSpan (/var/task/node_modules/drizzle-orm/tracing.cjs:31:14)
```
### Expected behavior
The query executed was the following:
```ts
const trucks = await db.query.trucks.findMany({ with: { availabilities: { where: (availability) => availability.available } } });
```
This should return a valid list of trucks and their available availabilities (I know it's not the best naming).
For testing purposes I tried the following query:
```ts
const trucks = await db.query.trucks.findMany({ with: { availabilities: true } });
```
It works correctly, but adding any condition results in the previous error.
```ts
const trucks = await db.query.trucks.findMany({ with: { availabilities: { where: () => true } } });
```
### Environment & setup
The code was run on an AWS Lambda using Node18.x using the Serverless Framework.
Contributor guide
Assessment
This issue has not been assessed yet.