Arcadiy Ivanov
ffc817f040
MDEV-40920 Say whether a value cut in a group reached the answer
...
A TEXT value longer than `group_concat_max_len` is cut on its way into
`blob_storage`, in `Field_blob::handle_group_concat()`. That happens
while the group is being built, not when the answer is put together, so
whether the answer is any shorter for it depends on whether the row
carrying the value reaches the answer at all. Every such cut was
reported as `ER_CUT_VALUE_GROUP_CONCAT`, which says that the answer lost
something the user asked for, and that is true of only some of them.
`Blob_mem_storage` now writes one byte in front of every value it
stores and returns the pointer past it, so `was_cut()` answers for any
value a reader holds a pointer to. `Field_blob::store()` sends every
blob of a table that has a `Blob_mem_storage` through
`handle_group_concat()`, so no value in that storage is without the
byte, and `Field_blob::get_ptr()` on the record of a row hands back
exactly the pointer that was stored.
`dump_leaf_key()` reads the mark off each row it appends and sets
`value_cut_in_result`. `val_str()` then reports:
1. **A warning**, `ER_CUT_VALUE_GROUP_CONCAT`, when a row that reached
the answer carried a cut value. The answer is short by what was cut.
The result being cut at `gconcat_max_len()` already gives that same
warning, and a group that hits both is told once, not twice.
2. **A note**, `ER_CUT_VALUES_WHILE_PROCESSING`, when a value was cut
but no row carrying one reached the answer. The answer may well be
what a larger limit would have given. One note per aggregate is
enough for a statement however many groups had a value cut, and
`cleanup()` clears the mark so a statement run again gets its own.
Reporting the loss as a warning keeps a strict `sql_mode` aborting on
it, which it does because `THD::raise_condition()` promotes a warning
and never promotes a note.
`ST_COLLECT` is not affected. It reports `ER_CUT_VALUE_GROUP_CONCAT`
itself, against `group_collect_max_len`.
`main.gconcat_cut_note` covers the split with one group holding a short
value and a long one, where a `LIMIT` alone decides which of them the
answer is built from, over both the sort tree and the duplicate filter.
`main.func_gconcat` shows the granularity: of five groups at
`group_concat_max_len=499999`, the one holding exactly 499999 bytes is
the one that does not warn.
Note that `blob_storage` only exists when the aggregate has an
`ORDER BY` or a `DISTINCT` and a blob field, so this is the only shape
in which a value is cut this way.
2026-10-11 18:42:17 +03:00
..
2026-10-11 18:42:17 +03:00
2026-06-15 16:53:03 +02:00
2026-05-26 20:00:43 +04:00
2025-06-13 08:52:54 +10:00
2026-08-13 23:15:53 +04:00
2026-06-17 16:46:39 +02:00
2026-09-04 12:21:02 +02:00
2026-05-15 13:30:21 +10:00
2026-08-03 13:42:39 +02:00
2026-02-06 17:46:52 +01:00
2026-10-11 18:42:13 +03:00
2024-11-05 14:00:47 -08:00
2025-07-28 21:29:29 +02:00
2024-11-05 14:00:48 -08:00
2026-10-09 15:46:32 +03:00
2026-10-09 15:46:32 +03:00
2025-09-29 18:25:09 +03:00
2024-11-05 14:00:47 -08:00
2025-03-14 12:08:56 +04:00
2026-02-16 21:55:18 +01:00
2026-10-11 18:42:16 +03:00
2025-03-14 12:08:56 +04:00
2025-03-14 12:08:56 +04:00
2025-06-18 16:46:21 +10:00
2026-09-09 09:24:22 +10:00
2026-07-20 13:23:00 +03:00
2024-06-20 11:32:13 -04:00
2026-07-24 17:06:40 +02:00
2024-12-02 17:51:17 +02:00
2026-01-31 14:08:54 +01:00
2026-07-20 13:23:00 +03:00
2026-07-20 13:23:00 +03:00
2025-08-01 18:03:20 +02:00
2026-01-31 14:08:54 +01:00
2026-10-11 18:42:17 +03:00
2026-10-11 18:42:09 +03:00
2026-10-11 18:42:16 +03:00
2024-12-02 11:35:34 +02:00
2026-10-11 18:42:16 +03:00
2026-10-11 18:42:16 +03:00
2026-07-29 12:27:46 +02:00
2026-03-24 09:49:17 +02:00
2026-03-24 09:49:17 +02:00
2025-04-22 16:26:36 -04:00
2025-04-29 16:53:02 +02:00
2026-10-11 18:42:16 +03:00
2024-10-15 15:36:12 +11:00
2025-04-22 16:26:36 -04:00
2026-06-14 23:40:25 +05:30
2026-10-09 15:46:32 +03:00
2026-10-09 15:46:32 +03:00
2026-06-15 16:53:03 +02:00
2026-05-26 21:15:58 +02:00
2025-10-08 09:05:38 +02:00
2026-10-09 15:46:32 +03:00
2026-10-11 18:42:16 +03:00
2024-11-05 14:00:47 -08:00
2026-07-29 12:27:46 +02:00
2024-11-29 13:43:17 +02:00
2026-07-02 11:08:22 +10:00
2026-08-20 08:27:14 +02:00
2026-08-20 08:27:14 +02:00
2025-08-01 18:03:20 +02:00
2025-08-01 18:03:20 +02:00
2026-06-18 11:01:05 +03:00
2024-12-05 10:11:58 +01:00
2026-09-14 18:09:52 +03:00
2026-10-11 18:42:09 +03:00
2026-08-20 08:27:14 +02:00
2026-02-03 14:53:15 +01:00
2026-09-14 18:09:52 +03:00
2026-05-26 21:15:58 +02:00
2026-02-03 14:53:15 +01:00
2025-10-15 11:32:39 +04:00
2026-02-03 14:53:15 +01:00
2026-09-08 08:12:46 +04:00
2026-09-04 12:21:02 +02:00
2026-10-11 18:42:09 +03:00
2026-09-04 12:21:02 +02:00
2026-08-20 08:27:14 +02:00
2026-10-11 18:42:17 +03:00
2026-10-11 18:42:17 +03:00
2026-10-11 18:42:09 +03:00
2026-03-13 16:17:11 +01:00
2026-08-20 08:27:14 +02:00
2026-03-24 09:49:17 +02:00
2024-10-08 11:58:46 +02:00
2026-01-31 14:08:54 +01:00
2026-10-11 18:42:09 +03:00
2026-10-11 18:42:09 +03:00
2026-07-30 11:41:55 +02:00
2026-05-15 13:46:27 +04:00
2026-10-11 18:42:09 +03:00
2026-10-11 18:42:09 +03:00
2026-07-30 11:41:55 +02:00
2025-09-16 10:10:08 +05:30
2026-07-15 18:22:18 +10:00
2026-01-08 12:02:45 +01:00
2026-08-03 13:42:39 +02:00
2026-06-11 11:40:20 +10:00
2026-02-05 11:55:12 +11:00
2024-11-23 08:14:22 -07:00
2024-07-08 22:40:16 +02:00
2025-03-14 12:08:56 +04:00
2025-03-14 12:08:56 +04:00
2025-05-05 12:02:47 +07:00
2026-08-13 23:15:53 +04:00
2026-05-26 21:15:58 +02:00
2025-04-27 19:40:00 +02:00
2024-11-05 14:00:47 -08:00
2026-09-14 18:09:52 +03:00
2026-10-11 18:42:16 +03:00
2026-10-11 18:42:16 +03:00
2024-10-17 07:53:59 -06:00
2026-01-23 03:21:03 +01:00
2026-09-15 11:28:15 +03:00
2026-09-15 11:28:15 +03:00
2026-09-15 11:28:15 +03:00
2026-09-15 11:28:15 +03:00
2026-10-09 15:46:32 +03:00
2026-05-26 21:15:58 +02:00
2025-03-14 12:08:56 +04:00
2026-09-04 12:21:02 +02:00
2026-06-05 13:15:49 +04:00
2025-08-04 20:24:01 +02:00
2024-10-03 15:59:20 +10:00
2025-03-14 12:08:56 +04:00
2026-06-24 12:27:13 +02:00
2025-03-14 12:08:56 +04:00
2025-03-14 12:08:56 +04:00
2026-05-26 21:15:58 +02:00
2026-07-07 15:56:47 +02:00
2026-10-01 13:36:14 +05:30
2026-10-01 13:36:14 +05:30
2025-04-15 18:58:32 +02:00
2026-05-08 08:00:01 +02:00
2026-08-19 08:15:36 +02:00
2026-10-09 15:46:32 +03:00
2026-09-04 12:14:15 +02:00
2026-07-29 12:27:46 +02:00
2026-01-23 03:21:03 +01:00
2026-08-13 13:00:12 +03:00
2026-08-12 14:31:57 +03:00
2025-10-16 09:31:56 +12:00
2025-10-16 09:31:56 +12:00
2026-05-22 09:52:05 +02:00
2026-05-22 09:52:05 +02:00
2026-04-30 16:58:47 +07:00
2026-04-30 17:28:18 +07:00
2026-04-30 16:58:47 +07:00
2026-10-01 13:36:14 +05:30
2025-09-16 10:10:08 +05:30
2025-10-10 20:32:56 +07:00
2026-08-12 14:31:52 +03:00
2026-09-14 18:09:52 +03:00
2026-08-12 14:31:53 +03:00
2024-11-05 14:00:47 -08:00
2026-07-29 12:27:46 +02:00
2025-03-14 12:08:56 +04:00
2026-07-03 15:08:53 +03:00
2026-10-11 18:42:17 +03:00
2026-07-01 09:36:53 +05:30
2026-09-14 18:09:52 +03:00
2026-08-20 08:27:14 +02:00
2025-03-14 12:08:56 +04:00
2026-09-04 12:21:02 +02:00
2026-08-12 14:31:55 +03:00
2026-05-06 11:35:09 +10:00
2025-07-22 10:44:12 +10:00
2025-03-14 12:08:56 +04:00
2025-03-14 12:08:56 +04:00
2026-07-30 11:41:55 +02:00
2026-07-22 14:36:17 +02:00
2026-08-04 15:04:06 +10:00
2026-08-04 15:04:06 +10:00
2026-08-04 15:04:06 +10:00
2026-05-08 08:00:01 +02:00
2026-09-04 12:21:02 +02:00
2024-11-05 14:00:47 -08:00
2026-01-31 14:08:54 +01:00
2026-05-26 21:15:58 +02:00
2025-04-27 19:40:00 +02:00
2026-06-21 15:32:20 +02:00
2026-10-11 18:42:16 +03:00
2024-11-05 14:00:47 -08:00
2026-09-04 12:14:15 +02:00
2026-04-28 13:05:50 +03:00
2025-10-10 20:32:56 +07:00
2026-02-03 14:53:15 +01:00
2025-09-15 18:57:04 -06:00
2025-09-29 18:25:09 +03:00
2024-07-22 15:14:50 +02:00
2026-05-26 21:15:58 +02:00
2026-05-26 21:15:58 +02:00
2026-08-14 17:30:08 +02:00
2025-10-08 09:05:38 +02:00
2025-04-11 13:42:12 +02:00
2026-08-14 17:30:08 +02:00
2026-10-09 15:46:32 +03:00
2026-06-16 12:24:32 +02:00
2026-07-30 11:41:55 +02:00
2025-07-07 14:03:49 -06:00
2026-07-30 11:41:55 +02:00
2026-01-27 12:59:30 -07:00
2026-07-28 13:29:55 -06:00
2026-06-16 12:24:32 +02:00
2026-02-07 22:06:40 +01:00
2026-01-27 12:59:23 -07:00
2026-01-27 12:59:23 -07:00
2026-09-15 11:28:15 +03:00
2026-08-20 08:27:14 +02:00
2026-09-15 11:28:15 +03:00
2025-05-05 12:02:43 +07:00
2024-11-05 14:00:47 -08:00
2025-03-14 12:08:56 +04:00
2025-04-19 10:59:58 +04:00
2025-03-14 12:08:56 +04:00
2026-06-15 16:53:03 +02:00
2026-06-15 16:53:03 +02:00
2025-04-23 17:20:47 -06:00
2025-04-23 17:20:47 -06:00
2025-03-14 12:08:56 +04:00
2026-04-02 09:15:17 +03:00
2026-05-26 21:15:58 +02:00
2026-05-26 21:15:58 +02:00
2026-09-04 12:14:15 +02:00
2026-09-04 12:21:02 +02:00
2026-07-29 13:05:09 +02:00
2026-04-30 17:22:36 +07:00
2025-10-15 11:32:39 +04:00
2026-09-04 12:21:02 +02:00
2026-04-27 18:26:17 -06:00
2025-03-14 12:08:56 +04:00
2026-02-06 17:46:50 +01:00
2025-11-04 12:39:27 +01:00
2026-09-04 12:14:15 +02:00
2026-09-04 12:14:15 +02:00
2026-09-10 09:07:23 +03:00
2026-09-08 08:12:46 +04:00
2026-09-08 08:12:46 +04:00
2026-08-13 23:15:53 +04:00
2026-08-13 23:15:53 +04:00
2026-08-13 23:15:53 +04:00
2025-08-01 18:03:20 +02:00
2026-09-04 12:14:15 +02:00
2026-09-04 12:14:15 +02:00
2026-04-06 15:16:38 +04:00
2026-09-08 08:12:46 +04:00
2026-08-13 23:15:53 +04:00
2026-08-20 08:27:14 +02:00
2026-07-19 16:35:20 +10:00
2025-09-04 18:08:39 +03:00
2026-10-09 15:46:32 +03:00
2026-08-27 16:10:40 +03:00
2026-10-09 15:46:32 +03:00
2024-06-24 13:09:47 +03:00
2026-08-03 13:42:39 +02:00
2026-07-30 11:41:55 +02:00
2026-06-15 15:15:10 +02:00
2026-06-15 15:15:10 +02:00
2024-11-05 14:00:47 -08:00
2026-09-15 11:28:15 +03:00
2025-03-14 12:08:56 +04:00
2026-09-29 15:33:22 +03:00
2026-10-09 15:46:32 +03:00
2026-08-04 15:04:06 +10:00
2025-10-08 09:05:38 +02:00
2026-02-24 14:48:11 +02:00
2025-10-08 09:05:38 +02:00
2024-11-05 14:00:50 -08:00
2026-04-02 09:15:17 +03:00
2025-03-14 12:08:56 +04:00
2026-10-09 15:46:32 +03:00
2026-10-11 18:42:17 +03:00
2026-01-31 14:08:54 +01:00
2026-01-05 20:34:44 +01:00
2026-07-30 11:41:55 +02:00
2025-05-03 12:06:36 +02:00
2026-03-24 09:49:17 +02:00
2024-11-05 14:00:47 -08:00
2024-11-05 14:00:47 -08:00
2026-06-29 07:40:04 +03:00
2026-01-08 12:02:45 +01:00
2026-07-30 16:15:40 +02:00
2026-07-30 16:15:40 +02:00
2026-10-09 15:46:32 +03:00
2026-02-06 17:46:51 +01:00
2026-03-17 18:57:42 +01:00
2026-10-11 18:42:16 +03:00
2026-02-02 08:07:28 +13:00
2026-10-11 18:42:09 +03:00
2026-07-30 16:15:40 +02:00
2026-04-15 21:49:26 +02:00
2025-04-19 10:59:58 +04:00
2026-02-06 17:46:51 +01:00
2026-09-08 08:12:46 +04:00
2026-08-12 14:31:52 +03:00
2026-08-12 14:31:52 +03:00
2026-10-11 18:42:16 +03:00
2024-06-20 11:32:13 -04:00
2024-06-27 10:26:09 +03:00
2025-08-04 12:05:53 +02:00
2024-11-05 14:00:47 -08:00
2025-05-05 12:02:48 +07:00
2024-12-02 17:51:17 +02:00
2026-05-28 17:27:57 +03:00
2026-10-11 18:42:09 +03:00
2025-09-19 12:31:14 +03:00
2025-10-08 09:05:38 +02:00
2025-10-08 09:05:38 +02:00
2026-08-12 14:31:55 +03:00
2026-10-01 13:36:14 +05:30
2026-09-08 08:12:46 +04:00
2026-09-08 08:12:46 +04:00
2026-06-24 12:27:13 +02:00
2025-03-14 12:08:56 +04:00
2024-11-05 14:00:47 -08:00
2026-04-06 15:00:16 +04:00
2026-05-26 21:15:58 +02:00
2026-04-09 17:25:40 +05:30
2026-04-09 17:25:40 +05:30
2025-02-12 10:17:44 +01:00
2025-03-14 12:08:56 +04:00
2025-08-04 12:05:53 +02:00
2026-09-10 09:07:23 +03:00
2026-09-04 12:21:02 +02:00
2026-10-09 15:46:32 +03:00
2024-07-03 12:45:30 +02:00
2026-08-04 15:04:06 +10:00
2026-10-09 15:46:32 +03:00
2026-08-04 15:04:06 +10:00
2026-09-04 12:21:02 +02:00
2026-08-13 23:15:53 +04:00
2025-07-29 13:15:02 +10:00
2026-07-06 13:44:56 +02:00
2026-09-04 12:21:02 +02:00
2025-01-09 09:41:38 +02:00
2026-09-08 08:12:46 +04:00
2026-02-09 15:28:24 +04:00
2026-09-08 08:12:46 +04:00
2026-03-11 08:05:08 +02:00
2025-03-14 12:08:56 +04:00
2024-12-02 17:51:17 +02:00
2026-09-04 12:21:02 +02:00
2026-10-09 15:46:32 +03:00
2026-10-09 15:46:32 +03:00
2026-09-04 12:21:02 +02:00
2026-01-23 03:21:03 +01:00
2024-07-10 12:17:09 +04:00
2026-10-11 18:42:17 +03:00
2026-10-11 18:42:17 +03:00
2026-10-09 15:46:32 +03:00
2025-10-08 09:05:38 +02:00
2026-08-20 08:27:14 +02:00
2024-10-15 10:50:22 +11:00
2026-10-11 18:42:16 +03:00
2026-09-04 12:21:02 +02:00
2024-06-20 11:32:13 -04:00
2026-10-11 18:42:16 +03:00
2026-10-11 18:42:17 +03:00
2026-08-12 14:31:52 +03:00
2026-08-12 14:31:57 +03:00
2026-08-12 14:31:57 +03:00
2026-10-11 18:42:09 +03:00
2026-10-09 15:46:32 +03:00
2026-08-19 08:40:05 +02:00
2026-03-17 18:57:42 +01:00
2025-10-08 09:05:38 +02:00
2026-07-28 13:14:38 +02:00
2026-10-11 18:42:09 +03:00
2026-10-09 15:46:32 +03:00
2026-10-09 15:46:32 +03:00
2026-10-09 15:46:32 +03:00
2026-05-26 21:15:58 +02:00
2026-02-09 15:28:24 +04:00
2026-05-22 09:52:05 +02:00
2025-08-01 18:03:20 +02:00
2026-10-11 18:42:09 +03:00
2026-10-11 18:42:09 +03:00
2026-10-11 18:42:09 +03:00
2025-04-19 10:59:58 +04:00
2025-03-14 12:08:56 +04:00
2025-04-19 10:59:58 +04:00
2026-09-04 12:14:15 +02:00
2026-04-06 15:16:38 +04:00
2025-08-01 18:03:20 +02:00
2025-08-01 18:03:20 +02:00
2026-07-30 16:15:40 +02:00
2026-04-06 15:00:16 +04:00
2026-10-11 18:42:09 +03:00
2026-10-11 18:42:09 +03:00
2025-03-14 12:08:56 +04:00
2024-12-02 17:51:17 +02:00
2026-10-11 18:42:16 +03:00
2026-10-11 18:42:16 +03:00
2026-04-30 09:41:26 -04:00
2026-10-09 15:46:32 +03:00
2026-10-11 18:42:16 +03:00
2025-03-14 12:08:56 +04:00
2026-09-14 18:09:52 +03:00
2025-04-19 10:59:58 +04:00
2026-03-13 16:17:11 +01:00
2026-08-20 08:27:14 +02:00
2026-09-04 12:21:02 +02:00
2024-06-20 11:32:13 -04:00
2026-10-11 18:42:17 +03:00
2026-08-20 08:27:14 +02:00
2026-08-20 08:27:14 +02:00
2026-06-18 16:14:40 +07:00
2026-10-11 18:42:16 +03:00
2026-10-11 18:42:17 +03:00
2026-07-20 13:23:00 +03:00
2025-02-12 10:17:44 +01:00
2026-08-20 08:27:14 +02:00
2026-03-24 09:49:17 +02:00
2024-06-20 11:32:13 -04:00
2024-07-09 13:20:49 +02:00
2025-09-04 18:08:39 +03:00
2025-03-14 12:08:56 +04:00
2024-06-24 13:09:47 +03:00
2026-09-08 08:12:46 +04:00
2025-08-04 14:58:10 +02:00
2025-09-30 17:37:12 +03:00
2025-10-08 09:05:38 +02:00
2025-03-14 12:08:56 +04:00
2026-05-22 09:52:05 +02:00
2026-10-11 18:42:17 +03:00
2024-12-02 11:35:34 +02:00
2026-09-04 12:14:15 +02:00
2025-09-15 18:57:04 -06:00
2026-05-05 13:57:50 +03:00
2026-09-04 12:21:02 +02:00
2025-01-21 12:18:56 +01:00
2025-03-14 12:08:56 +04:00
2025-03-14 12:08:56 +04:00
2025-09-10 15:03:59 +03:00
2026-06-16 12:24:32 +02:00
2025-08-04 14:58:10 +02:00
2025-11-28 12:56:27 +02:00
2025-11-25 13:01:26 +02:00
2024-06-10 23:29:05 +02:00
2026-01-08 12:02:45 +01:00
2026-07-30 11:41:55 +02:00
2024-06-20 11:32:13 -04:00
2025-08-04 14:58:18 +02:00
2026-06-24 17:31:40 +02:00
2024-06-20 11:32:13 -04:00
2024-06-27 10:26:09 +03:00
2026-09-04 12:21:02 +02:00
2026-06-04 09:23:29 +03:00
2026-06-21 15:32:20 +02:00
2026-08-19 08:40:05 +02:00
2026-06-15 16:53:03 +02:00
2026-04-02 09:15:17 +03:00
2025-12-15 14:47:15 +02:00
2024-09-01 02:48:19 +02:00
2024-10-03 13:24:43 +03:00
2024-09-09 13:50:38 +03:00
2026-09-04 12:21:02 +02:00
2026-06-04 09:23:29 +03:00
2026-01-08 12:02:45 +01:00
2024-06-20 11:32:13 -04:00
2026-02-07 22:12:32 +01:00
2026-01-20 10:23:44 +02:00
2025-07-14 08:21:50 +02:00
2026-08-03 13:42:39 +02:00
2026-07-29 12:27:46 +02:00
2026-10-09 15:46:32 +03:00
2026-06-04 09:23:29 +03:00
2025-10-08 14:15:04 +03:00
2026-04-21 13:00:39 +03:00
2026-06-05 13:15:49 +04:00
2024-10-16 13:23:47 +02:00