Fixing an issue with newlines between coalesce statements in Postgres - we were escaping newlines even if they were valid when given a list of JSON operations to perform.
This commit is contained in:
parent
6170b46513
commit
586dd8fea7
|
@ -28,6 +28,7 @@ describe.each(
|
||||||
const config = setup.getConfig()
|
const config = setup.getConfig()
|
||||||
const isOracle = dbName === DatabaseName.ORACLE
|
const isOracle = dbName === DatabaseName.ORACLE
|
||||||
const isMsSQL = dbName === DatabaseName.SQL_SERVER
|
const isMsSQL = dbName === DatabaseName.SQL_SERVER
|
||||||
|
const isPostgres = dbName === DatabaseName.POSTGRES
|
||||||
|
|
||||||
let rawDatasource: Datasource
|
let rawDatasource: Datasource
|
||||||
let datasource: Datasource
|
let datasource: Datasource
|
||||||
|
@ -47,6 +48,9 @@ describe.each(
|
||||||
transformer: "return data",
|
transformer: "return data",
|
||||||
readable: true,
|
readable: true,
|
||||||
}
|
}
|
||||||
|
if (query.fields?.sql && typeof query.fields.sql !== "string") {
|
||||||
|
throw new Error("Unable to create with knex structure in 'sql' field")
|
||||||
|
}
|
||||||
return await config.api.query.save(
|
return await config.api.query.save(
|
||||||
{ ...defaultQuery, ...query },
|
{ ...defaultQuery, ...query },
|
||||||
expectations
|
expectations
|
||||||
|
@ -207,6 +211,31 @@ describe.each(
|
||||||
expect(prodQuery.parameters).toBeUndefined()
|
expect(prodQuery.parameters).toBeUndefined()
|
||||||
expect(prodQuery.schema).toBeDefined()
|
expect(prodQuery.schema).toBeDefined()
|
||||||
})
|
})
|
||||||
|
|
||||||
|
isPostgres &&
|
||||||
|
it("should be able to handle a JSON aggregate with newlines", async () => {
|
||||||
|
const jsonStatement = `COALESCE(json_build_object('name', name),'{"name":{}}'::json)`
|
||||||
|
const query = await createQuery({
|
||||||
|
fields: {
|
||||||
|
sql: client("test_table")
|
||||||
|
.select([
|
||||||
|
"*",
|
||||||
|
client.raw(
|
||||||
|
`${jsonStatement} as json,\n${jsonStatement} as json2`
|
||||||
|
),
|
||||||
|
])
|
||||||
|
.toString(),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
const res = await config.api.query.execute(
|
||||||
|
query._id!,
|
||||||
|
{},
|
||||||
|
{
|
||||||
|
status: 200,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
expect(res).toBeDefined()
|
||||||
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@ if (types) {
|
||||||
types.setTypeParser(1184, (val: any) => val) // timestampz
|
types.setTypeParser(1184, (val: any) => val) // timestampz
|
||||||
}
|
}
|
||||||
|
|
||||||
const JSON_REGEX = /'{.*}'::json/s
|
const JSON_REGEX = /'{\s*.*?\s*}'::json/gs
|
||||||
const Sql = sql.Sql
|
const Sql = sql.Sql
|
||||||
|
|
||||||
interface PostgresConfig {
|
interface PostgresConfig {
|
||||||
|
|
Loading…
Reference in New Issue