Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w7pvY-005k5F-0a for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Apr 2026 07:23:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w7pvW-00FgbE-1l for pgsql-hackers@arkaria.postgresql.org; Wed, 01 Apr 2026 07:23:46 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w7pvW-00Fgb6-0t for pgsql-hackers@lists.postgresql.org; Wed, 01 Apr 2026 07:23:46 +0000 Received: from mail-vk1-xa2c.google.com ([2607:f8b0:4864:20::a2c]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w7pvU-000000026J2-2Pj1 for pgsql-hackers@lists.postgresql.org; Wed, 01 Apr 2026 07:23:45 +0000 Received: by mail-vk1-xa2c.google.com with SMTP id 71dfb90a1353d-56a8fdaddebso2673191e0c.0 for ; Wed, 01 Apr 2026 00:23:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775028224; cv=none; d=google.com; s=arc-20240605; b=glgdRT5R3iJ2zeD80yOEFrRSM5n+hCQPaAZCDhwy3I/L686E/aSBYctLBoyTLvQHec lBY+ZCYmTnExdBYXJrZez/FPukoB9P0P92Mz9tP7qbIKG92CGtRHMNAofgM1PhUCNAIg MIWmKVXGlX95FhgItfU7Apo83xSvxpJH6R3ibI/MDtc6JoTQL9WJq4IvhclccosnKdGn WDlxQ7rpXB1byE68vS4LmPGoIkuXA3qIldFdGxr93e9UEXUPR5r3EZAblmRGddRG8I2S VnVq3x/nJUUtkq195tYB1LmLeiWaHE41ZJdIz7Kua3A23nipev5k1pOuFNtnWVpFyhg+ LO1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=Yp2l3C48YsmRvXt2qwQ0vXmzXtY9hJSTA1FmxURLrTY=; fh=bTq0XdvTqDT1bzX+svfjfqNMmSuRqngdSlTYVYnqijc=; b=T+QFEqN3ooJFosng9PpNO71EG2ZmTHFHarP0T97FmUFCjKic85Xma+9NuxSpLo2FuW DLC7V8g41zhOcECIANEhvrWO9N8qtabDOil/cLa0EB6sRYzjeYOg3dKJgSsDanUmCCHb t+/4YNDB/MeeWwT7X9bXQdSnVjPUAEAg6w3NvGgK0WQpzxq53Nfe1XjHivuYo4HW/SSG 1aCwGxzikyF5T0/R+XwL6hui5oX7RVDaXPTJgA6sYenkKhtBYWhjs15VvizXdvOMHNH4 9Vh76TWLnA2di/g6rdBzeScXyAkr76mvg8xziz7uXaTGNCqVYvZ7cBAEuQb1Fyqpo+3u 8zdw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775028224; x=1775633024; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=Yp2l3C48YsmRvXt2qwQ0vXmzXtY9hJSTA1FmxURLrTY=; b=Ulyl17oWQkRIcQDC9NDdVutqOYsb92lapj73wO8clh6l3Ne9vNiUFx1JeyamWd+HPb DXZYfJxlypcQog8iDS1Sl3C+OMh1CiOhHkQiC5u/JRRNxlcPMGWBXdZqguK3NgfS6W9Y JhsvbfEwrv4OtUCwijFMQMsBhUH/TdbLN4TgFzgAy+kQPjBT5j0kui2+W2ebCqNsyT2b indv07qY31hZFXhiAWCK2FNE0sudm1GpQI/86ZELrD3ESK3ZkZGKULWUTOjkTOJf7Zbq A1IZ8+S4I351elvVM/XTta9cpy6Vbz9i98Fbm1HWlCJ2O4wqGfY5ytK10qIK3BPkdHd3 GmDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775028224; x=1775633024; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=Yp2l3C48YsmRvXt2qwQ0vXmzXtY9hJSTA1FmxURLrTY=; b=GyfKs/8kFWoQaNIrEnyok1VLZTlfyYX2Ugiivq9dPMMaByXw4SAUQgdZ21LBpNsN/g rA5x+uItK0lF1eG37G+z9WUxZo5F5oDtaGOjMb6LAabQ00JGU4y1JnJ4z1mVfJmyUzPC kWEbL3Uc1O4X5T3tExDOlikSrzLP+IDxl0JD89O2z4KhZn5GyLWdRrgtaYqo/oNHP1d9 8SrVgZ+W1Y0u+zaSHBkBm4WL4aJ2sWBmX6dnzl8vNP1wyOSgm9S6CKJ4qrebxJnJcB0l CLBXTyyppWfc8tgGluMrBdhpZ2BPwfT97IqO0wN1TuWrh9Lf3w/BdlDi97Jwlp+6Jq5d JtuQ== X-Forwarded-Encrypted: i=1; AJvYcCUmEGEZeKWQ2q4GEwN9kiwRO4nwM57ort37PwWRIr0zf9Qg3V/0etzv0Pet9VghGZHCZxPjK4JAw691g3SL@lists.postgresql.org X-Gm-Message-State: AOJu0YxUdp170jYqb5CIKXQFoJ6NkBuPtD1aFzqGKmrcpcP0Rmi31cF/ 9ROWUXGRvdOjfRgaiDcfTfH7Y0XVjgshc8vnqLF/7aUDsDGVXZ7YWZrbB0Hm1/P7PebDaC+4eM+ mxGTSU5A8Rz5bHSfWin4n4GNdgYBvs0M= X-Gm-Gg: ATEYQzwbAIegGx/wHvqE9b/Ie0JaBadCoWJFYrFdCcQOTkjvqO45EUQb4O4TKS0eJK+ cXJIXgw64c9AsqLIui8LIOFMdvEGBG6maRWIUUV0BPdgW5ekqpkMl0m1ioZRmG1k1km+hsvziUQ 3puTMHrpioKoadi2ri8ty1+yPReXeC+cHicWe0r/9/EduOUA2uIE2ruodSTp6qM6jN8t2I7mEbf d+7CRjsMfkoW53Y2lf6LZ+dj6aM4Qtp9sB/KdkITDFYCpOLtHH5659QLv3zBTYU9fdYrevfzVms 4nBrecKYqbPe2o8x1+owaM/etBwuUXqs33/GU0dN1Merq6a0CG+v7pgpFfoIIPauRfTd4YDB8jZ Z43ECokte58LgGrgSlJ5yw4BdyKnBRrljHrFM5taze84C4z378i3xSUma55GlZ6/R80jW5EdF+d 5K6rwM1WQS9OtudrVddV5pZWDQ6Np/Bn00 X-Received: by 2002:a05:6122:d91:b0:56b:9784:8a2a with SMTP id 71dfb90a1353d-56d8a94f9cdmr998560e0c.10.1775028223694; Wed, 01 Apr 2026 00:23:43 -0700 (PDT) MIME-Version: 1.0 References: <5ae9578e-f25e-49c5-97ab-ad27bc2050b5@eisentraut.org> <5221f892-e1d5-4943-a3dc-5c9c7bdf4924@eisentraut.org> In-Reply-To: From: jian he Date: Wed, 1 Apr 2026 15:23:07 +0800 X-Gm-Features: AQROBzDvmZjv5mI1kEPnO5ghJrHmwJp2xJtjm4FyawKjiUcYLiVYMoMa-IHUfUY Message-ID: Subject: Re: CAST(... ON DEFAULT) - WIP build on top of Error-Safe User Functions To: Corey Huinker Cc: Amul Sul , Peter Eisentraut , Kirill Reshke , Vik Fearing , Isaac Morland , pgsql-hackers@lists.postgresql.org Content-Type: text/plain; charset="UTF-8" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk One more issue I found: https://git.postgresql.org/cgit/postgresql.git/commit/?id=74c96699be3f53c058c8794c07952221b9625b4f SELECT JSON_VALUE(jsonb '1234', '$' RETURNING char(2) DEFAULT '011' ON ERROR); ERROR: value too long for type character(2) Similarly, we can SELECT CAST(text '1234' as char(2) DEFAULT '111111' ON conversion ERROR); ERROR: value too long for type character(2) Composite types respect typmod, for example: CREATE TYPE comp AS (a char(3), b int); SELECT CAST('(14,42)' AS comp DEFAULT '(1234,2)' ON CONVERSION ERROR); -- error The regression tests are too large; we can order them by the cast source type's pg_type.type category, so we won't miss any tests. What do you think?