Skip to content

$queryRaw doesn't create prepared statements correctly #136

Open
@Noor0

Description

@Noor0
function getUsers(ids: number[], filter?: string) {
  const filterStatement = `%${filter}%`
  return $queryRaw`SELECT * FROM users WHERE id IN (${Prisma.join([ids])}) ${filter ? Prisma.sql`OR email LIKE ${filterStatement}` : Prisma.empty}`
}

The query above works fine outside of tests but, in a test with jest-prisma It creates a bad prepared-statement that looks like this in the logs

postgres-1  | 2024-03-05 08:10:26.809 UTC [348] ERROR:  syntax error at or near "$2" at character 45
postgres-1  | 2024-03-05 08:10:26.809 UTC [348] STATEMENT:
postgres-1  | 	      SELECT * FROM users WHERE id IN ($1) $2
postgres-1  |

and results in a PrismaClient error

PrismaClientKnownRequestError:
    Invalid `prisma.$queryRaw()` invocation:


    Raw query failed. Code: `42601`. Message: `ERROR: syntax error at or near "$2"`

Metadata

Metadata

Assignees

No one assigned

    Labels

    help wantedExtra attention is needed

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions