diff --git a/hana/lib/HANAService.js b/hana/lib/HANAService.js index eb880f5d8..a8490e299 100644 --- a/hana/lib/HANAService.js +++ b/hana/lib/HANAService.js @@ -781,7 +781,7 @@ class HANAService extends SQLService { xpr[i - 1] = '' xpr[i] = expression - xpr[i + 1] = '' + xpr[i + 1] = ' = TRUE' } } } @@ -855,6 +855,7 @@ class HANAService extends SQLService { if (up in caseOperators) break continue } + if ('_internal' in cur) return true if ('xpr' in cur) return this.is_comparator(cur) } return false diff --git a/test/compliance/SELECT.test.js b/test/compliance/SELECT.test.js index 1b4438ab5..d4b707974 100644 --- a/test/compliance/SELECT.test.js +++ b/test/compliance/SELECT.test.js @@ -263,6 +263,23 @@ describe('SELECT', () => { assert.strictEqual(timestampMatches.length, 1, 'Ensure that the dateTime column matches the timestamp value') }) + test('combine expr and other compare', async () => { + const cqn = CQL`SELECT bool FROM basic.literals.globals` + cqn.SELECT.where = [ + { + xpr: [ + { + xpr: [{ ref: ['bool'] }, '!=', { val: true }] + } + ] + }, + 'and', + { ref: ['bool'] }, '=', { val: false } + ] + const res = await cds.run(cqn) + assert.strictEqual(res.length, 1, 'Ensure that all rows are coming back') + }) + test('exists path expression', async () => { const cqn = { SELECT: {