drizzle-team / drizzle-team/drizzle-orm

[BUG]: AWS Data API error when getting relation with where clause

Open
#2,374 2 comments 0 reactions 0 assignees View on GitHub
bug driver/aws-data-api priority rqb
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.