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.94.2) (envelope-from ) id 1sFV0N-002rTI-Bw for pgsql-general@arkaria.postgresql.org; Fri, 07 Jun 2024 08:31:24 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1sFV0L-009dEH-US for pgsql-general@arkaria.postgresql.org; Fri, 07 Jun 2024 08:31:22 +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.94.2) (envelope-from ) id 1sFV0L-009dE9-AJ for pgsql-general@lists.postgresql.org; Fri, 07 Jun 2024 08:31:22 +0000 Received: from mail-lj1-x22f.google.com ([2a00:1450:4864:20::22f]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1sFV0J-00088D-L7 for pgsql-general@lists.postgresql.org; Fri, 07 Jun 2024 08:31:20 +0000 Received: by mail-lj1-x22f.google.com with SMTP id 38308e7fff4ca-2eaae2a6dc1so35297961fa.0 for ; Fri, 07 Jun 2024 01:31:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec-at.20230601.gappssmtp.com; s=20230601; t=1717749078; x=1718353878; darn=lists.postgresql.org; h=mime-version:user-agent:content-transfer-encoding:autocrypt :references:in-reply-to:date:to:from:subject:message-id:from:to:cc :subject:date:message-id:reply-to; bh=MAS9GdANltVgBia661oKUm8of73hFqce8jKpHgU43Ao=; b=RKbnKnv6FRkrMsqrx4iaU3SQXe45iiEnuRgaE9guoNVoCXYCte3B5y1DC/pJr2w+Sl CiTZSuxzs8wXdclsDexL2m8zmExy5yJL1Us9f0HvpQXY1o7W2FkqlCwQBwJMYISFjjv9 Qbxe8wcDISFmoIImC9azQsX22Rj+lPrXgKDXH8/GEuCDmrsJmRIxoNf64PIn2H9tMxDM w9bjQJwlxODJDXdXdKzvGRwzADgHge+1+aLADKhIsmQzelEjO//jHuZqu+AMaRlbTy9W NvfUl2dqKvs/kjPqkh7mA4Jo6PmE38I+JPHh/Vhqucd6UlQX+6sX3IOryKf2jjkqTv/R OXfg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1717749078; x=1718353878; h=mime-version:user-agent:content-transfer-encoding:autocrypt :references:in-reply-to:date:to:from:subject:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=MAS9GdANltVgBia661oKUm8of73hFqce8jKpHgU43Ao=; b=rylcY0bKEuhz3yuX87IpLFzYXEdhnHlB0S3fl+P+eoQF3EvAG4VOJ4/yK3OJ0YIk8Z Vof9EFqbRulDsk9CA7n/YxG+eLf7sHWVJeUDFB3iclT1qo0rfiySzA/LqDYV3yxoBnWb MOKWtquLArB3EZHLGBlEKmBAguLqPGcpVB1kZvpJaeet+/j41U4DgJV04xQc2rq/FwSn wAtFQT6GZ85cW1re9miT7XRoE2p5jG8Vs/cSn8bDAqhwWvc6j3PIqfBnuw9OLCjRxfwX fqaYOIbkHvUz3L5ooH6Dd/uWj00H8GhKiCVP86iF+t1igAMlDuH0OFW0BR2kc483xn32 0AHw== X-Forwarded-Encrypted: i=1; AJvYcCXP/n4JgzOPJkK2cb0bx8hIoPpt2LBMwsJNIIdQ00vqRkk1eK7hSNTRYEgsEiDzBDqHvQrfOnDJpsHD+X3/xwRy1jXFJzO3gwDo6CfLelZE8WYH X-Gm-Message-State: AOJu0YwJZTAoyA7BToyhMr011dccyh9mvzdhMiZ2K1VyqDOoUF9AN4L4 ceD1+16iR1ya0meOmW2awD+TCb2ezhI/jjVoq94vLeOBo5w+zDEZFPurFT86Rx0= X-Google-Smtp-Source: AGHT+IEptwowHazRkdRIcjYlP3sBHFM1ucKKQ7/kDj1z4hjHDPy0zg3+Mevuhk2+ICSwap4oK5ov6A== X-Received: by 2002:a05:651c:4cd:b0:2e5:6957:187a with SMTP id 38308e7fff4ca-2eadce2814amr18140211fa.4.1717749077586; Fri, 07 Jun 2024 01:31:17 -0700 (PDT) Received: from localhost.localdomain ([2001:871:5e:336e:5d04:60ce:a3f5:dbec]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-a6c805d0af8sm211022566b.87.2024.06.07.01.31.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 07 Jun 2024 01:31:17 -0700 (PDT) Message-ID: Subject: Re: Oracle to Postgres - Transform Hash Partition From: Laurenz Albe To: David Barbour , pgsql-general@lists.postgresql.org Date: Fri, 07 Jun 2024 10:31:16 +0200 In-Reply-To: References: Autocrypt: addr=laurenz.albe@cybertec.at; prefer-encrypt=mutual; keydata=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 +AnW5l0HsQcY9ntFL/zEBOaonjdJf Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.50.4 (3.50.4-1.fc39) MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Thu, 2024-06-06 at 11:28 -0500, David Barbour wrote: > Been an Oracle DBA for quite a while and we're moving from Oracle to Post= gres. >=20 > I have a table that I need to transform into a hash partitioned table. > I've gone through all the steps to create a hash partitioned table, with = 8 partitions such as=C2=A0 >=20 > create table idev.assessment_result_2023_dab_part (like idev.assessment_r= esult_2023_dab)partition by hash (district_oid); >=20 > CREATE TABLE idev.assessment_result_2023_dab_part_assessment_result_2023_= p1 PARTITION OF idev.assessment_result_2023_dab_part > =C2=A0 =C2=A0 FOR VALUES WITH (modulus 64, remainder 0) >=20 > ....etc through partition 2023_p8 FOR VALUES WITH (modulus 64, remainder = 7) That won't do. If you use a modulus of 64, you need 64 partitions, one for each possible division remainder. If you want 8 partitions, you have to use modulus 8. > Now I need to 'attach' the original table.=C2=A0 The problem I'm running = into is > there are no good examples of how to define the values.=C2=A0=C2=A0 >=20 > I've tried several iterations of various 'for values', 'values', 'for val= ues with', > etc. but they all error out. >=20 > Here's an example: > =C2=A0alter table idev.assessment_result_2023_dab_part=20 > =C2=A0attach partition idev.assessment_result_2023_dab for values with(mo= dulus 8, remainder 1) to (modulus 8, remainder 7) >=20 > ERROR: syntax error at or near "to" LINE 2: ..._2023_dab for values with(= modulus 8, remainder 1) to (modulu... I think you are confused about hash partitioning. One partition is only for a single remainder. You cannot have a partition = for several remainders. Hash partitioning is mostly for splitting up a table into several parts of roughly equal size. You decide how many partitions you want; that will bec= ome the modulus. Then you have to create that many partitions, one for each re= mainder. If you want to attach an existing table as a partition, that will only work= if all rows in the table belong into that partition. Otherwise, you will get = an error. So you typically won't be able to attach an existing table as a hash partit= ion. To convert an existing table into a hash partitioned table, you have to - create a new, empty partitioned table with *all* its partitions - transfer the data with "INSERT INTO hash_part_tab SELECT * FROM tab" Yours, Laurenz Albe