From ff6be0779f60da28d0df42002dc387e1585011a6 Mon Sep 17 00:00:00 2001 From: d-w-moore Date: Tue, 5 May 2026 01:49:14 -0400 Subject: [PATCH 1/4] [_417] warn against assumed collation order --- docs/system_overview/genquery.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/system_overview/genquery.md b/docs/system_overview/genquery.md index e7f343d5..de594313 100644 --- a/docs/system_overview/genquery.md +++ b/docs/system_overview/genquery.md @@ -201,6 +201,19 @@ There are a few other options that can be used with GenQuery to affect how the r - no-distinct: Instructs GenQuery to return all results, even repeating identical results where applicable. - uppercase: When specified, all VALUEs should be supplied in UPPERCASE and the query will be made case-insensitive. +It should finally be noted, with regard to the case-sensitive query defaults, that one cannot always rely on an assumed +collation order (i.e. the result of comparing mixed-case string arguments) to be followed. Because GenQuery passes +operators such as <, =, >, BETWEEN, and ORDER directly to the backing database, such assumptions are inherently +non-portable. Consider the following query, when run in the context of three data objects named `a`, `A`, and `a_`: + +```sql +select DATA_NAME where DATA_NAME between 'a' 'a_' +``` + +Under the default American setup of MySQL, for example, 'A' will fall in the range defined by `between` (as corroborated +by testing the result of the query `select 'a' <= 'A' and 'A' <= 'a_'` in the mysql client) and thus be reported among +GenQuery's results; whereas under the default setup of PostgreSQL, it will not. + ### Attributes GenQuery attributes can be used in concert to retrieve information about an entity or category of entities from multiple different tables. If the attributes are not related in some way that will allow for table joinery, an error will occur, so make sure the query makes logical sense. Attempting a query where the selected ATTRIBUTEs cannot be logically linked together will result in the error `CAT_FAILED_TO_LINK_TABLES` (iRODS error code -825000). If this problem occurs, consider splitting the query into multiple queries or finding another ATTRIBUTE which will accomplish the task. From fd7580fb8be3a69e99206a172bbcbe73867a8398 Mon Sep 17 00:00:00 2001 From: d-w-moore Date: Tue, 5 May 2026 01:51:25 -0400 Subject: [PATCH 2/4] separate section maybe? --- docs/system_overview/genquery.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/system_overview/genquery.md b/docs/system_overview/genquery.md index de594313..870913cf 100644 --- a/docs/system_overview/genquery.md +++ b/docs/system_overview/genquery.md @@ -201,7 +201,9 @@ There are a few other options that can be used with GenQuery to affect how the r - no-distinct: Instructs GenQuery to return all results, even repeating identical results where applicable. - uppercase: When specified, all VALUEs should be supplied in UPPERCASE and the query will be made case-insensitive. -It should finally be noted, with regard to the case-sensitive query defaults, that one cannot always rely on an assumed +### Collation Order + +It should be noted, with regard to the case-sensitive query defaults, that one cannot always rely on an assumed collation order (i.e. the result of comparing mixed-case string arguments) to be followed. Because GenQuery passes operators such as <, =, >, BETWEEN, and ORDER directly to the backing database, such assumptions are inherently non-portable. Consider the following query, when run in the context of three data objects named `a`, `A`, and `a_`: From 60886435cc18679fd172d7bdd3028ee5ddc45782 Mon Sep 17 00:00:00 2001 From: d-w-moore Date: Tue, 5 May 2026 11:06:05 -0400 Subject: [PATCH 3/4] streamline wording --- docs/system_overview/genquery.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/system_overview/genquery.md b/docs/system_overview/genquery.md index 870913cf..62b2b2b7 100644 --- a/docs/system_overview/genquery.md +++ b/docs/system_overview/genquery.md @@ -204,9 +204,12 @@ There are a few other options that can be used with GenQuery to affect how the r ### Collation Order It should be noted, with regard to the case-sensitive query defaults, that one cannot always rely on an assumed -collation order (i.e. the result of comparing mixed-case string arguments) to be followed. Because GenQuery passes -operators such as <, =, >, BETWEEN, and ORDER directly to the backing database, such assumptions are inherently -non-portable. Consider the following query, when run in the context of three data objects named `a`, `A`, and `a_`: +collation order (i.e. the result of comparing mixed-case string arguments) to be followed. That is because a +particular de facto ordering within a character set - as implied by GenQuery operators such as <, =, >, BETWEEN, +and ORDER (BY) - can easily be impacted by the configuration and design of the backing DBRMS which implements those +operators. + +Consider the following query for example, when run in the context of three data objects named `a`, `A`, and `a_`: ```sql select DATA_NAME where DATA_NAME between 'a' 'a_' From f070e065855d26a62af92de5170aa434ddf11879 Mon Sep 17 00:00:00 2001 From: d-w-moore Date: Tue, 5 May 2026 11:08:32 -0400 Subject: [PATCH 4/4] ws;linebreaks --- docs/system_overview/genquery.md | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/docs/system_overview/genquery.md b/docs/system_overview/genquery.md index 62b2b2b7..34bc3950 100644 --- a/docs/system_overview/genquery.md +++ b/docs/system_overview/genquery.md @@ -203,11 +203,7 @@ There are a few other options that can be used with GenQuery to affect how the r ### Collation Order -It should be noted, with regard to the case-sensitive query defaults, that one cannot always rely on an assumed -collation order (i.e. the result of comparing mixed-case string arguments) to be followed. That is because a -particular de facto ordering within a character set - as implied by GenQuery operators such as <, =, >, BETWEEN, -and ORDER (BY) - can easily be impacted by the configuration and design of the backing DBRMS which implements those -operators. +It should be noted, with regard to the case-sensitive query defaults, that one cannot always rely on an assumed collation order (i.e. the result of comparing mixed-case string arguments) to be followed. That is because a particular de facto ordering within a character set - as implied by GenQuery operators such as <, =, >, BETWEEN, and ORDER (BY) - can easily be impacted by the configuration and design of the backing DBRMS which implements those operators. Consider the following query for example, when run in the context of three data objects named `a`, `A`, and `a_`: @@ -215,9 +211,7 @@ Consider the following query for example, when run in the context of three data select DATA_NAME where DATA_NAME between 'a' 'a_' ``` -Under the default American setup of MySQL, for example, 'A' will fall in the range defined by `between` (as corroborated -by testing the result of the query `select 'a' <= 'A' and 'A' <= 'a_'` in the mysql client) and thus be reported among -GenQuery's results; whereas under the default setup of PostgreSQL, it will not. +Under the default American setup of MySQL, for example, 'A' will fall in the range defined by `between` (as corroborated by testing the result of the query `select 'a' <= 'A' and 'A' <= 'a_'` in the mysql client) and thus be reported among GenQuery's results; whereas under the default setup of PostgreSQL, it will not. ### Attributes