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 1vaJEK-006jb1-1V for pgsql-novice@arkaria.postgresql.org; Mon, 29 Dec 2025 19:48:38 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vaJDJ-000Zc2-1B for pgsql-novice@arkaria.postgresql.org; Mon, 29 Dec 2025 19:47:34 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vZTX7-00BevF-1s for pgsql-novice@lists.postgresql.org; Sat, 27 Dec 2025 12:36:34 +0000 Received: from mx0a-00230701.pphosted.com ([148.163.156.19]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vZTX4-0035GL-0Z for pgsql-novice@lists.postgresql.org; Sat, 27 Dec 2025 12:36:33 +0000 Received: from pps.filterd (m0297266.ppops.net [127.0.0.1]) by mx0a-00230701.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 5BRCaQtZ470592 for ; Sat, 27 Dec 2025 04:36:26 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=synopsys.com; h= content-type:date:from:message-id:mime-version:subject:to; s= pfptdkimsnps; bh=FMJZn4hMmjJ86yTj5n6ZrvGyOaHqRIbG9+fZ9qslgzE=; b= p1dVcbnqYXyED9FQ5YOFnSuwthnyUdQH/99sTm2yVDCSUQOBpA8feSsnoWqJnYpY HCpqN5VjWdAMoaG7BrEffC0BW3IzDSL0fke7pvGuQe+pPxu/RmQtGbfaqKiQ7CBw V0GVUQgpAuk5f0g4exH1EpygmP0m2SZi9V3T9YEcmKvGPKTLxjbJXi7Kr8eQzkAZ ok0GTPjGb+ZgRtuFSBOrDL3lT9qILIw7Opgs5CX6JOREta8dqcV1/arUQxF2yKNh PjXxeRezb91Id90ezclJLwKXHznXU/kmWd52Fvhw3b20S6IK2a1oHU2cKFbN8Xd7 MdGZZsfnH/vO7uMA1M5vUg== Received: from smtprelay-out1.synopsys.com (smtprelay-out1.synopsys.com [149.117.73.133]) by mx0a-00230701.pphosted.com (PPS) with ESMTPS id 4bafk7g029-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT) for ; Sat, 27 Dec 2025 04:36:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1766838986; bh=fr5mUMYMm/w20b5/AhPt5X1kz19/PhKTHdbTUsH4tCo=; h=From:To:Subject:Date:From; b=AchKfIlCPcc3quF6HudLMj2ZT8AxQqG7Zi46BivxJ/BmHF2HNUyM24zJP/eofMD50 HhiNjrRgSyhnXIOkadXxWRUDhXF6vfWmZsdI+r8g/X1o/JPVle4I0ZBNfYxgauET3f 0b4Ev97NvGlNSKjEIDwouYjL4tC2cpnViIaHr11MWGlrdhEE14aFx1lQEfU8aZXwX2 p3qp5uKRbjuTPgo/cm6rJqGm3Kknf+5/+wdLZRJs4kY/T6sM0xCbLDJTRqpVcoxmkN 9+WZLTQKANDC2rL9PZK2ce9DXtnBwhjdi9Fy8vk/oW47ud8Ez3QdRT9LLpMKxkRlZv uzvJhdlRFNdtA== Received: from mailhost.synopsys.com (sv2-mailhost2.synopsys.com [10.205.2.134]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) client-signature RSA-PSS (2048 bits)) (Client CN "mailhost.synopsys.com", Issuer "SNPSica2" (verified OK)) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id 4F254400FE for ; Sat, 27 Dec 2025 12:36:25 +0000 (UTC) Received: from o365relay-in.synopsys.com (sv2-o365relay3.synopsys.com [10.202.1.139]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "o365relay-in.synopsys.com", Issuer "Sectigo Public Server Authentication CA OV R36" (not verified)) by mailhost.synopsys.com (Postfix) with ESMTPS id BE553A005A for ; Sat, 27 Dec 2025 12:36:25 +0000 (UTC) Authentication-Results: o365relay-in.synopsys.com; dmarc=pass (p=reject dis=none) header.from=synopsys.com Authentication-Results: o365relay-in.synopsys.com; spf=pass smtp.mailfrom=synopsys.com Authentication-Results: o365relay-in.synopsys.com; dkim=pass (1024-bit key; unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=selector1 header.b=LiYPeLwZ; dkim-atps=neutral Received: from SN1PR07CU001.outbound.protection.outlook.com (mail-sn1pr07cu00103.outbound.protection.outlook.com [40.93.14.99]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mail.protection.outlook.com", Issuer "DigiCert Cloud Services CA-1" (verified OK)) by o365relay-in.synopsys.com (Postfix) with ESMTPS id 7E87E402B2 for ; Sat, 27 Dec 2025 12:36:25 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=V48+FHEY2jpBlwTAq5YbdDqU/o4w8by2RaP+W8Yxuj/Y50bpUn1pyYsx35H2n4KGJKr7awdSneK57Vkasxu/2u0/Wtq+M7z737dm8F9qqF5rOR/A/wQ76hUm15pZUkCCaIJe/9HkCRSEgYOVTQHaiVKDxuKL059ayzC+MlPCIEgFJOb8Wf+sv348NGlVZNNp/IR87y+14mHKcILSZ8aKbZHFu28KfpHaDlLw2Fy2nP4xDhriWbEqFgvMdOr0hP8QxmsXGGEQc2yjW3+B17y56POhDRHn/OQ4GdSqJHkvl/Rzyv6IIKS87vMtpb13+F0AKwLNcMWF2VB7ubx09+bQ1g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=FMJZn4hMmjJ86yTj5n6ZrvGyOaHqRIbG9+fZ9qslgzE=; b=Ji5gm9ZnaEgETNsXSMOx5g+yLOiU1EQOZOu6Cu5o0ODMQwV75abIfLSc3Q73miIEDJ2IEuqdqWdWjQPah7auGsXZn4itNjNc3dBfQG5JYC5F1s8dM05Qi//auX24ajC1cXZRog53he89/LKP7SoUL5t/uqEavI/up1/7Pj9uBuFWJJD4ZP4NNTs+LeU3hmFBNjwA1TpVVi6ZjUCv1JPuUga4w9nG9KHEyqui/vOlEeNWGwWGfmlmZorI6bqUqucAVlwz2kXXs4tDyCm5v3kLEamdFFdyvWPbwG866/JMcZHdlzFkjrIIU+K9BZtCxd97wsXnXcuDQ9Gnt87yWm3AIQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=synopsys.com; dmarc=pass action=none header.from=synopsys.com; dkim=pass header.d=synopsys.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=synopsys.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=FMJZn4hMmjJ86yTj5n6ZrvGyOaHqRIbG9+fZ9qslgzE=; b=LiYPeLwZrfTsOX2jfD9SsaZiBsKdBxStdPjNaHx48BI65q4m9V5r8iRG2Kn2sB29/PqfSEFf5h4e3HWy3YxL1mcj9DdOPVNvRkktGRc8B9DytGO6htkhYhwEuxy+dRhk83SZDUbs0Pcz61V2ZdirARUO5iuASx2H+4zn/YPwOUo= Received: from DM4PR12MB6039.namprd12.prod.outlook.com (2603:10b6:8:aa::12) by SA0PR12MB4349.namprd12.prod.outlook.com (2603:10b6:806:98::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9456.12; Sat, 27 Dec 2025 12:36:21 +0000 Received: from DM4PR12MB6039.namprd12.prod.outlook.com ([fe80::167f:7830:a4cf:edae]) by DM4PR12MB6039.namprd12.prod.outlook.com ([fe80::167f:7830:a4cf:edae%7]) with mapi id 15.20.9456.013; Sat, 27 Dec 2025 12:36:20 +0000 X-SNPS-Relay: synopsys.com From: Chris Papademetrious To: "pgsql-novice@lists.postgresql.org" Subject: is there a way to automate deduplication of strings? Thread-Topic: is there a way to automate deduplication of strings? Thread-Index: Adx3Kn73z1jJnk45TmCawCiELOofpw== Date: Sat, 27 Dec 2025 12:36:20 +0000 Message-ID: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: DM4PR12MB6039:EE_|SA0PR12MB4349:EE_ x-ms-office365-filtering-correlation-id: 941b9157-d334-47c7-08ad-08de454489e9 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|376014|366016|1800799024|8096899003|38070700021; x-microsoft-antispam-message-info: =?us-ascii?Q?aAL97HnEvpJ+HiEuGKkSLFiKtv1nsbBNe/nTycu11uoPK65ESJ5YTdC4/lva?= =?us-ascii?Q?PYj++tzS6LNIQN8rqV4V720rRc/XV/5FdDNTyy3LCeSi8uSGi5ROjd5l5UZ5?= =?us-ascii?Q?ZSDk+bwhF+WBpIaysmnt2r9+AuoEiYEwwi+uCn8R6A6hdJy0JqNmo3FNG1kH?= =?us-ascii?Q?uU/is8tLklybWvjxrtK6KaaISxry/L0Iuarm3cO6lVK6TUdpBdcEkY85S/t6?= =?us-ascii?Q?FXdm/uqeNSQP9lcGaFjpp3ZEI6FnTTM5hdKOgmMNTDNG3UJAtZp1iXALafPe?= =?us-ascii?Q?/mtjeJjDkhWp8E5QuLjRvTvYcQ7ViLesTqoC4W0cL53Llkow3xWgwAvDn88d?= =?us-ascii?Q?eZp9uNiUnvTVq6w0CLyT6QK3yTP3u5DxouZpvUInPcBjfRevLdObbi9+CHfX?= =?us-ascii?Q?FLJFXf93Nh5c7Q4GPAM8X0T3HVVDRC3dRIuyGHCS9cuEUgoMNz/pxn0IrNn3?= =?us-ascii?Q?t6T4lyaIhJY2V6Fngf8U9sLfnlgxmWyeBg+ourrFMbfilZaPTKLZ1tPMxiDK?= =?us-ascii?Q?prATnOAaSEbskOmjFrZgFzdXo/2aZrNFr0LU1YuV4Uz6O44v1vHd/PpbZXnd?= =?us-ascii?Q?tU6O65w81h2HiNJkw+zO2DNdGUAK+StaKHFUkMA/wcHg3U9g7Zyk/n9djv4m?= =?us-ascii?Q?BqhNOJNn4vjhXS29cYknMlPp+6+3xBHQaHwOiEolfaPVLlZ6inajchigCDfj?= =?us-ascii?Q?Dn3HShmKePEZEWCNQgvwWNtdRSVjERPY9v10qK3VVvCVKyUZ9Jt6jbhHfcQS?= =?us-ascii?Q?JmjfnNaT+9ehkLJpwODjDvALQbJz1VY/WMWwbgKjMPFvhbg8k5vLWSW8oA6I?= =?us-ascii?Q?Z5MJRruOaRiJEJkfqPlYZczZOLuqNLKVvYTFhUd+lQkr2Ia7oUH/GtLcBTiL?= =?us-ascii?Q?c8qPQKcAvyzDiJCfqeNgBKnETEYrzNxg67Yg5d1JRPqC8CKCas7Zc8Yl9zrN?= =?us-ascii?Q?f/HfWUSzCtNVD/zH16/mnnMtXcz+orcOXDHr1AlYVSNLMsxJYXOQLJdnm9YL?= =?us-ascii?Q?ukKXCNv4OkUn7Uxn5AkPm1gFXK0LJkz+Mk7a96wOswW+f61TiQGc6eunkzYh?= =?us-ascii?Q?VkPs71X4Q1s8PU2AouHbasYXMSSBRBnsBPTESGV7+coq2i5mF9Ky5mOgT3om?= =?us-ascii?Q?b0/cNmFOInm6wxPulbf5+pieaVzgd8X6ImxpOBGvxx/qibwXWzPUiTzBx6ws?= =?us-ascii?Q?xGEn53+Zhprxmq2K0hVsaTVdL66UDuiwMeKipV2B2a3JL+GmeyZyBEjcKMu3?= =?us-ascii?Q?blbeXv36AX3IOOccKs7vJ+TcJXN8+AEtsXxvi17wAbnZ9V126pcXbUbLjpww?= =?us-ascii?Q?d0N9QDb+PiEZstEHbDgW9WS1rEM0O5COklbG+4HPxeABWL89fO65nCgxe2RT?= =?us-ascii?Q?3/F3BZGVcrhKO48YI/YZtc/IpUcT/Xfb4dyv65OhDVi5Hn0XbaUPwX9Ig3YK?= =?us-ascii?Q?VgsRRyMqxmmfP3u073b6rS1NJwlwELIHkeGhWZISeiudk/+lcvoUmypNB86Q?= =?us-ascii?Q?aqkLHtza5eH5e3CXxUYB1ZPszpaRZq81Gghw?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DM4PR12MB6039.namprd12.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(366016)(1800799024)(8096899003)(38070700021);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?L7WumVigH2dNj4yuLjsEg397LnOZe1v3XekHxWizufBoSV7FOjD6bHwzlE9G?= =?us-ascii?Q?6mLn6UGZgFTp/mz9MacsCCwWBV9IQknyERnEMcTgK5DHiiMVDn06XiCHr3lQ?= =?us-ascii?Q?HFX0KwrvkEirfcLZO62X3LynJoVoIajTNBBaSF8mVicJo+O5vxv2WsqIM+r+?= =?us-ascii?Q?41cD6WMaCqoCPqdISK+mGED6Ti+00Q0VvF0Un3Ffv4G5BfXJFrrtomOYNs0h?= =?us-ascii?Q?D0orVXk3bgvyjXc8l1tSHSRJnV6jcebTmE3xttJCFg6p2/sSYpNoihxlTtvM?= =?us-ascii?Q?f2kIPyVS2VaIKjMc+dv+CoJQzMNiVEfI+IwdxPlTg1V6w4it+AdvilvZebyK?= =?us-ascii?Q?SQAzTG5VwgRTmvTpfmdctJjKt5GlzRU/Hu+9a6OMoFo2I7oBB1j4Jy9rNP14?= =?us-ascii?Q?hqDEVhJkP+nwjOv1PYS1mdjfN14M/XSynBYCP3SxXV0ui3qSA3PbXbDRT4ue?= =?us-ascii?Q?jNn/f0jl3Y65RSsvE+EHyj10rQFIFqkRHH31p1WSLXo5qwr24GHzSEmMXMk+?= =?us-ascii?Q?2Mk0t31tsUlnGgy7l1bwM1DYodzzCozQoyc+R6vrbIyyFQS0Hcg11aD1jVT9?= =?us-ascii?Q?RoYQ/JyIqszJ8g2jaI3I3RfDDfenvY4NczQOgAkm99CtcpWYcqe/j2zqGjml?= =?us-ascii?Q?wTsmuf3iEma8XdQ2K5mzAy3N2YvFgRa/6ej4arZrtBb8JWkMZl9JmFLr1Qym?= =?us-ascii?Q?k7sdq16M9v5t/BIUiK/8FV2Xc0T5YB0DQ45Hu48VLztFXqwE+u5or2RVyx5a?= =?us-ascii?Q?bwneFII3LOInqJ5D4/DnPdkY8SOdHXV/tSGoLuUk5aXWzSli8MLT2iZNYut7?= =?us-ascii?Q?LcF1pwvuv4rciI62MVtC2yCPD4xqYcNUmgfLJz5o0m60u3nSERmQy/Oqo0Ho?= =?us-ascii?Q?M7B6V8fCmjj/NGQdeSZ4TtZ9zHbCzjXKto+u5xPmTaiftUPhvLPtOl1i4qSV?= =?us-ascii?Q?TDBOobYtygKmSY3He1VzaQT6c/fig/Y3dn3HzbxYkIbb9QvKuleOj3JY6pOu?= =?us-ascii?Q?u0XmuDxnP1FjJYY1ShP/U2/lbph2dUjGCkJd4/OuZXA/gq2OD2GXAJhri8v+?= =?us-ascii?Q?FZMbUoRCKx+1qQhyYUTHQxeJLzauMcefduZR8scE0qY01GXDj7mVLqJaQojc?= =?us-ascii?Q?CYbaAhFx1fMxOxfHVItXx/SUsw00iN/HaTer7XHlUa3P14Gv4/iEUSKt67XP?= =?us-ascii?Q?5TNPZ9qsy12M0LK2CjJbVyHybPhEnTRUuFXtYZjblCDhVsjiRB6Tnt4209aw?= =?us-ascii?Q?MG4/8d9+rhLNfREedHgNZzPbAw/sKtuMkoc8dHVczAuAFhbQ7s/hxL5e+HdK?= =?us-ascii?Q?im3+Zhb0M7QHdZBfOmsrSL/Ig3bYezAzJEiLAVHcTUfT7nyZ7rd8wKSwXnxM?= =?us-ascii?Q?P3fJxENx+YZ6+1WwAhr0DSbJuRiLTTtzSFV3VvEPsrC8BTr1eR837jSWjp0d?= =?us-ascii?Q?VJjsIXA+CRxio84oU4eAwTseQ4/8rq39/y6sAYlPcqdVD49iSklGQN3vWkJS?= =?us-ascii?Q?YZNnLjiYGivg73SJDj6uM606aWEERxIYG+KS37VbYNJHOaAkx9hqjttn/Rxw?= =?us-ascii?Q?N53rx66+XSKPl4KLP4rX5WjwjpjLla6TnknwfoJLKFTDuOyidgskqpo8ONnU?= =?us-ascii?Q?Ul9RR9EywLisTnwB1V1EcSw8SvGsbvGONTDzXhlN3q+eecXqa2Ez6h5Zy03p?= =?us-ascii?Q?KJ11i4mp6XTnpo4KUOvYH0SJIo7BQK6R3IgcfKh7xcW8vnq7?= Content-Type: multipart/alternative; boundary="_000_DM4PR12MB603953767048EE1B8A39283ADDB1ADM4PR12MB6039namp_" MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 63LFhFtkCQ5if/H6vZlV6tqTd3m7hZ6k9IrySBOY/X0CT0ItP8az291+aUfdT7dkAtWe4KSIFg73flk9hdsnPBzAiZTxyYkAAvD2hVyMbvvk0RQ/GaZKYiaIQDg+yYvYAH91Xd11frYY81Mw1X7aivnmXFieVbkG6JWr7zORwJuR5TCq+M72Wdj1dIRGwVQ8xgnJDdVV58d1mLv24UAcGguCr+KygHRqC+eFcGIA3D4VUjlSrsMM41LocFwkRk8ALE4SdVnk7UlElr9+IfTsFpM0xF1GLrQ4MlV450ALk3qiqjd48+eDUpa3QRkQk2p9JXVUUOm/oXpWhlGFKzYiNcob/qbTHVI4PaI/tO3TI3JstvKqmoaHoAlSoKiRM+FgmXvvE7qmFVZOsGhGIXzB1XbYu79Ha8aOvQ9nKb1Cduvdk9qf1H/BQ3PSRxyr9PjBMR3s5pvzajhK9cUQUDF42iE8BVBLIMKZiHyYnXjXL73YCM4vfxf4TLhB8whNleQ2rTb0a5Sn4LSNpTCn6tv7g2aLdSY+XXpVcQneumVTtOgr+Yslc4Y9wmOBf/Z9D6GiyGl/lHArKFWEjrM82NRsAUepEwQXP53g9ZaMtt4bOTjw5qAxFmOGkO68qJepNrVQlGcmW8jidTZamiDxGI6PqQ== X-OriginatorOrg: synopsys.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: DM4PR12MB6039.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 941b9157-d334-47c7-08ad-08de454489e9 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Dec 2025 12:36:20.6735 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: c33c9f88-1eb7-4099-9700-16013fd9e8aa X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: mnK7Az/FlhenQrhH+9tQcA8k/mdFB7ZKxfoNPVIxWlpgCDpk04giUGp7W5mFcJnn5/PNxGPRTvEGs2jrwQe7sg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR12MB4349 X-Proofpoint-ORIG-GUID: nswhYt7hoxBRNwMCF5YZ03ZSNpM1Ue1M X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUxMjI3MDExNyBTYWx0ZWRfX+AYF8FPV5tu6 FwEctNufa+SZ4ylXg4qMPorkM/nZxhXYG9/74nLSwBg6IH3g4NXRzM+Fw6uVbWFbhazC2BD2tyE hZWfQwjR4uGKcktrSx0jqX/UEVTg4ulPZpi70YpTFgNhV86dblFKA2KICo0TZNjNJy6hFQ0gcV6 pQmG6M2GXBmJMwUqNrzHQ04AruRjlOTLYOMYHxu5lKBR7NvQccz/NRHHOLBD9vLNEt4xknZwg6Z xqnpZ3+AV/xYv6deHrdgA4zL/DQ1Zle6I5a5sxNK9DQdFfSIPCFW+v1FPGF+9/TO5Iob/OhZll4 AbqyOv2Nn37n7TBPtYLmCXzvi2h1IhzDmpd1id1VD5bFKfyRu9NqWe9iaqIbRNoedM8SFc742KK WNfPGEeU7agEAg4fqjBMkXxhrWzh7tAP71kWhEN0Q3yPsARfuH/cRzblgHYkFLL+ntabIxFok5/ frkSG57+5qjQeBHP56Q== X-Proofpoint-GUID: nswhYt7hoxBRNwMCF5YZ03ZSNpM1Ue1M X-Authority-Analysis: v=2.4 cv=RsLI7SmK c=1 sm=1 tr=0 ts=694fd2ca cx=c_pps a=8EbXvwLXkpGsT4ql/pYRAw==:117 a=8EbXvwLXkpGsT4ql/pYRAw==:17 a=z/mQ4Ysz8XfWz/Q5cLBRGdckG28=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=xqWC_Br6kY4A:10 a=wP3pNCr1ah4A:10 a=qPHU084jO2kA:10 a=VkNPw1HP01LnGYTKEx00:22 a=cpiJwhCajtwQilRezh4A:9 a=CjuIK1q_8ugA:10 a=yMhMjlubAAAA:8 a=SSmOFEACAAAA:8 a=KJ-lUcjwpObDTXuTMekA:9 a=qDzk3K6cHsND7WXZ:21 a=gKO2Hq4RSVkA:10 a=UiCQ7L4-1S4A:10 a=hTZeC7Yk6K0A:10 a=frz4AuCg-hUA:10 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1121,Hydra:6.1.9,FMLib:17.12.100.49 definitions=2025-12-27_03,2025-12-26_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_active_cloned_notspam policy=outbound_active_cloned score=0 priorityscore=1501 phishscore=0 impostorscore=0 lowpriorityscore=0 clxscore=1011 bulkscore=0 suspectscore=0 spamscore=0 malwarescore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2512120000 definitions=main-2512270117 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_000_DM4PR12MB603953767048EE1B8A39283ADDB1ADM4PR12MB6039namp_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hello everyone! First time poster here. I have a question about deduplicating text strings stored in a database. I = am aware of the pattern of creating a separate table for unique values, the= n referencing those values by key. But this requires some transactional com= plexity for storage and retrieval, along with cleanup of no-longer-referenc= ed values over time. And, this complexity grows with the number of primary-= table columns that use this indirection. I would only use this for (1) seldom-referenced columns that (2) have a hig= h rate of duplication and (3) have an average string length that makes dedu= plication worthwhile. Are there any native or extension-based methods to simplify this in Postgre= s? I searched and came up empty, but maybe I'm not searching with the right= terms. Thanks! * Chris --_000_DM4PR12MB603953767048EE1B8A39283ADDB1ADM4PR12MB6039namp_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Hello everyone! Fir= st time poster here.

 

I have a question a= bout deduplicating text strings stored in a database. I am aware of the pat= tern of creating a separate table for unique values, then referencing those= values by key. But this requires some transactional complexity for storage and retrieval, along with cleanup of = no-longer-referenced values over time. And, this complexity grows with the = number of primary-table columns that use this indirection.

 

I would only use th= is for (1) seldom-referenced columns that (2) have a high rate of duplicati= on and (3) have an average string length that makes deduplication worthwhil= e.

 

Are there any nativ= e or extension-based methods to simplify this in Postgres? I searched and c= ame up empty, but maybe I’m not searching with the right terms.<= /o:p>

 

Thanks!<= /span>

 

  • Chris

 

 

--_000_DM4PR12MB603953767048EE1B8A39283ADDB1ADM4PR12MB6039namp_--