Ð
Size: a a a
Ð
VY
SELECT x, COUNT(x), array_agg(x)
FROM (
SELECT ((i << 20) | (j << 10) | k)::text::xid AS x
FROM generate_series(0,1023) AS i,
generate_series(0,1023) AS j,
generate_series(0,1023) AS k
) s
GROUP BY x;
l
SELECT x, COUNT(x), array_agg(x)
FROM (
SELECT ((i << 20) | (j << 10) | k)::text::xid AS x
FROM generate_series(0,1023) AS i,
generate_series(0,1023) AS j,
generate_series(0,1023) AS k
) s
GROUP BY x;
YS
b
kernel: [41806532.140786] Call Trace:
kernel: [41806532.140807] dump_stack+0x63/0x8b
kernel: [41806532.140815] dump_header+0x71/0x285
kernel: [41806532.140822] oom_kill_process+0x220/0x440
kernel: [41806532.140824] out_of_memory+0x2d1/0x4f0
kernel: [41806532.140828] __alloc_pages_slowpath+0xa61/0xe20
kernel: [41806532.140832] __alloc_pages_nodemask+0x263/0x280
kernel: [41806532.140841] alloc_pages_current+0x6a/0xe0
kernel: [41806532.140844] __page_cache_alloc+0x81/0xa0
kernel: [41806532.140847] filemap_fault+0x378/0x6f0
kernel: [41806532.140851] ? page_add_file_rmap+0x5b/0x180
kernel: [41806532.140853] ? filemap_map_pages+0x36c/0x390
kernel: [41806532.140862] ext4_filemap_fault+0x31/0x44
kernel: [41806532.140866] __do_fault+0x24/0xf0
kernel: [41806532.140869] handle_pte_fault+0x883/0xd30
kernel: [41806532.140871] __handle_mm_fault+0x478/0x5c0
kernel: [41806532.140874] handle_mm_fault+0xb1/0x1f0
kernel: [41806532.140884] __do_page_fault+0x250/0x4d0
kernel: [41806532.140887] do_page_fault+0x2e/0xe0
kernel: [41806532.140890] ? page_fault+0x2f/0x50
kernel: [41806532.140892] page_fault+0x45/0x50
ПЕ
kernel: [41806532.140786] Call Trace:
kernel: [41806532.140807] dump_stack+0x63/0x8b
kernel: [41806532.140815] dump_header+0x71/0x285
kernel: [41806532.140822] oom_kill_process+0x220/0x440
kernel: [41806532.140824] out_of_memory+0x2d1/0x4f0
kernel: [41806532.140828] __alloc_pages_slowpath+0xa61/0xe20
kernel: [41806532.140832] __alloc_pages_nodemask+0x263/0x280
kernel: [41806532.140841] alloc_pages_current+0x6a/0xe0
kernel: [41806532.140844] __page_cache_alloc+0x81/0xa0
kernel: [41806532.140847] filemap_fault+0x378/0x6f0
kernel: [41806532.140851] ? page_add_file_rmap+0x5b/0x180
kernel: [41806532.140853] ? filemap_map_pages+0x36c/0x390
kernel: [41806532.140862] ext4_filemap_fault+0x31/0x44
kernel: [41806532.140866] __do_fault+0x24/0xf0
kernel: [41806532.140869] handle_pte_fault+0x883/0xd30
kernel: [41806532.140871] __handle_mm_fault+0x478/0x5c0
kernel: [41806532.140874] handle_mm_fault+0xb1/0x1f0
kernel: [41806532.140884] __do_page_fault+0x250/0x4d0
kernel: [41806532.140887] do_page_fault+0x2e/0xe0
kernel: [41806532.140890] ? page_fault+0x2f/0x50
kernel: [41806532.140892] page_fault+0x45/0x50
GS
GS
b
QH
YS
> SELECT '{}'::int[][] = array[array[]::int[]]
t
(1 row)
и всё, нет? Да и вообще, эти "многомерные" массивы — не более, чем условность:The current implementation does not enforce the declared number of dimensions either. Arrays of a particular element type are all considered to be of the same type, regardless of size or number of dimensions. So, declaring the array size or number of dimensions in CREATE TABLE is simply documentation; it does not affect run-time behavior.Из https://www.postgresql.org/docs/current/arrays.html
QH
> SELECT '{}'::int[][] = array[array[]::int[]]
t
(1 row)
и всё, нет? Да и вообще, эти "многомерные" массивы — не более, чем условность:The current implementation does not enforce the declared number of dimensions either. Arrays of a particular element type are all considered to be of the same type, regardless of size or number of dimensions. So, declaring the array size or number of dimensions in CREATE TABLE is simply documentation; it does not affect run-time behavior.Из https://www.postgresql.org/docs/current/arrays.html
{{3, 3, 3}, {2, 2}, {1}, {}}?QH
YS
{{3, 3, 3}, {2, 2}, {1}, {}}?QH
YS
QH
b
b
ПЕ