drizzle-team / drizzle-team/drizzle-orm

[BUG]: Logger doesn't print iterator queries

Open
#2,414 2 comments 1 reaction 1 assignee Claimed by @L-Mario564 View on GitHub
bug qb/crud
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.10

### What version of `drizzle-kit` are you using?

0.21.4

### Describe the Bug

When I'm using an `.iterator(params)` on a prepared statement (`cloneClients`), I don't see any `Query: select ...` logs, but I noticed that `.execute(params)` (`cloneEdgesServices`) works fine.

Code samples

```ts
// connection.ts

import { drizzle } from "drizzle-orm/mysql2";
import { createConnection } from "mysql2";
import { config } from "../config";

export const connection = createConnection(config.DATABASE_URL);

export const db = drizzle(connection, {
logger: true,
});

export type DB = typeof db;
```

```ts
// queries.ts

const selectClients = db
.select()
.from(clients)
.where(inArray(clients.serviceId, sql`(${sql.placeholder('sourceServiceIds')})`))
.prepare();

export async function cloneClients(sourceServiceIds: number[], targetServiceId: number) {
const inserts = [];

for await (const client of selectClients.iterator({ sourceServiceIds })) {
const newClient: typeof clients.$inferInsert = {
...client,
// omitted
};

inserts.push(db.insert(clients).values(newClient));
}

await Promise.all(inserts);
}

const selectEdgesServices = db
.select({
edgeId: edgesServices.edgeId,
active: edgesServices.active,
})
.from(edgesServices)
.where(inArray(edgesServices.serviceId, sql`(${sql.placeholder('sourceServiceIds')})`))
.prepare();

export async function cloneEdgesServices(sourceServiceIds: number[], targetServiceId: number) {
const rows = await selectEdgesServices.execute({ sourceServiceIds });

const values = rows.map((edgeService): typeof edgesServices.$inferInsert => ({
...edgeService,
// omitted
}));

await db.insert(edgesServices).values(values);
}
```

### Expected behavior

See `Query: select...` logs from `.iterator(params)` just like `.execute(params)` calls.

### Environment & setup

- MySQL 5.7 with mysql2 driver

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.