Skip to content

feat(orderby): allow to disable collations with @cds.collate: false #492

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Mar 7, 2024

Conversation

David-Kunz
Copy link
Contributor

@David-Kunz David-Kunz commented Mar 4, 2024

Disable order-by collations of string columns with @cds.collate: false

@johannes-vogel johannes-vogel merged commit 820f971 into main Mar 7, 2024
4 checks passed
@johannes-vogel johannes-vogel deleted the collate-annotation branch March 7, 2024 08:37
@cap-bots cap-bots mentioned this pull request Mar 6, 2024
patricebender added a commit that referenced this pull request Mar 22, 2024
🤖 I have created a release *beep* *boop*
---


<details><summary>db-service: 1.7.0</summary>

##
[1.7.0](db-service-v1.6.4...db-service-v1.7.0)
(2024-03-22)


### Added

* also support lowercase matchespattern function
([#528](#528))
([6ea574e](6ea574e))
* forUpdate and forShareLock
([#148](#148))
([99a1170](99a1170))
* **hana:** drop prepared statements after end of transaction
([#537](#537))
([b1f864e](b1f864e))
* **orderby:** allow to disable collations with
[@cds](https://github.com/cds).collate: false
([#492](#492))
([820f971](820f971))


### Fixed

* **cqn2sql:** Smart quoting of columns inside UPSERT rows
([#519](#519))
([78fe10b](78fe10b))
* deep delete for views without navigation
([#434](#434))
([3ebc9c2](3ebc9c2))
* Getting rid of quirks mode
([#514](#514))
([c9aa6e8](c9aa6e8))
* issue with reused select cqns
([#505](#505))
([916d175](916d175))
* joins without columns are rejected
([#535](#535))
([eb9beda](eb9beda))
* **search:** dont search non string aggregations
([#527](#527))
([c87900c](c87900c))
* **search:** search on aggregated results in HAVING clause
([#524](#524))
([61d348e](61d348e))
</details>

<details><summary>sqlite: 1.6.0</summary>

##
[1.6.0](sqlite-v1.5.1...sqlite-v1.6.0)
(2024-03-22)


### Added

* forUpdate and forShareLock
([#148](#148))
([99a1170](99a1170))
* **hana:** drop prepared statements after end of transaction
([#537](#537))
([b1f864e](b1f864e))


### Fixed

* **`sqlite`:** use keyword list from compiler
([#526](#526))
([a227c61](a227c61))
</details>

<details><summary>postgres: 1.6.0</summary>

##
[1.6.0](postgres-v1.5.1...postgres-v1.6.0)
(2024-03-22)


### Added

* also support lowercase matchespattern function
([#528](#528))
([6ea574e](6ea574e))
* forUpdate and forShareLock
([#148](#148))
([99a1170](99a1170))


### Changed

* use new cds build API @sap/cds-dk &gt;= 7.5.0
([#508](#508))
([ef22ebe](ef22ebe))
</details>

<details><summary>hana: 0.1.0</summary>

##
[0.1.0](hana-v0.0.6...hana-v0.1.0)
(2024-03-22)


### Added

* also support lowercase matchespattern function
([#528](#528))
([6ea574e](6ea574e))
* forUpdate and forShareLock
([#148](#148))
([99a1170](99a1170))
* **hana:** drop prepared statements after end of transaction
([#537](#537))
([b1f864e](b1f864e))


### Fixed

* **`hana`:** use keyword list from compiler
([#525](#525))
([c6993d9](c6993d9))
* **hana:** improve search inside where clause detection
([#538](#538))
([51b8af3](51b8af3))
* **hana:** reduce service manager calls for failing tenants
([#533](#533))
([e95fd17](e95fd17))
* issue with reused select cqns
([#505](#505))
([916d175](916d175))
* joins without columns are rejected
([#535](#535))
([eb9beda](eb9beda))
* mass insert for unknown entities
([#540](#540))
([f2ea4af](f2ea4af))
</details>

---
This PR was generated with [Release
Please](https://github.com/googleapis/release-please). See
[documentation](https://github.com/googleapis/release-please#release-please).

---------

Co-authored-by: Johannes Vogel <[email protected]>
Co-authored-by: Patrice Bender <[email protected]>
@cap-bots cap-bots mentioned this pull request Jul 18, 2024
@ThePlenkov
Copy link

@David-Kunz hi! Sorry for tagging in the closed ticket- but I just found that after switching to cap-js/hana my queries from a flat table like BKPF turned out into something like this:

SELECT *,
('$[' || lpad("$$RN$$", 6, '0')) as "_path_"
FROM (
        SELECT *,
            ROW_NUMBER() OVER (
                ORDER BY "MANDT" COLLATE ENGLISH ASC,
                    "BUKRS" COLLATE ENGLISH ASC,
                    "BELNR" COLLATE ENGLISH ASC,
                    "GJAHR" COLLATE ENGLISH ASC
            ) as "$$RN$$"
        FROM (
                SELECT "BKPF"."MANDT",
                    "BKPF"."BUKRS",
                    "BKPF"."BELNR",
                    "BKPF"."GJAHR",
                    "BKPF"."BLART",
                    "BKPF"."BLDAT",
                    "BKPF"."BUDAT",
                    "BKPF"."MONAT",
                    "BKPF"."CPUDT",
                    "BKPF"."CPUTM",
 ...
                FROM "api.odata.BKPF" as "BKPF"
                ORDER BY "BKPF"."MANDT" COLLATE ENGLISH ASC,
                    "BKPF"."BUKRS" COLLATE ENGLISH ASC,
                    "BKPF"."BELNR" COLLATE ENGLISH ASC,
                    "BKPF"."GJAHR" COLLATE ENGLISH ASC
                LIMIT 10
            ) as "BKPF"
    ) as "BKPF"

To be honest I am little bit confused and concerned about this functionality.

Isn't it supposed to be something opposite - like collate is switched off global wise and enabled only when is really needed with cds.collate: true?

However even like this - it's not clear how to use it. Should we mention every single field to collate/not collate?

Thanks!

Copy link
Contributor

@danjoa danjoa left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why is that required? Is that a public feature? Also supported equally in Java?

@ThePlenkov
Copy link

Well from my side what is required - is to be able to control collation logic globally ( disable ) using @cap-js/hana module. It's described here #965

@ThePlenkov
Copy link

Yes it's a public documented feature, however provided only in Java not JS

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants