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 1u9eZq-004Uyn-ND for pgsql-general@arkaria.postgresql.org; Tue, 29 Apr 2025 06:36:23 +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 1u9eZo-005Sbk-Ed for pgsql-general@arkaria.postgresql.org; Tue, 29 Apr 2025 06:36:21 +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.94.2) (envelope-from ) id 1u9eZo-005Sau-3G for pgsql-general@lists.postgresql.org; Tue, 29 Apr 2025 06:36:21 +0000 Received: from mail-ej1-x62c.google.com ([2a00:1450:4864:20::62c]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u9eZl-0008Z4-2G for pgsql-general@lists.postgresql.org; Tue, 29 Apr 2025 06:36:20 +0000 Received: by mail-ej1-x62c.google.com with SMTP id a640c23a62f3a-ac345bd8e13so798036266b.0 for ; Mon, 28 Apr 2025 23:36:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cybertec.at; s=google; t=1745908576; x=1746513376; darn=lists.postgresql.org; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:from:to:cc:subject :date:message-id:reply-to; bh=zVjCaxLZ3wPir0lMAubJR3AWouoPbykeqi1W8lH3ZLU=; b=YT39FRULiir3Q8PxZlqwJBDHO8J3wEGaA/Fxuwfe4D5NAezORtcup2eHnPAupO6myo lwCBcuYYoptIT9DpKNuCW8B2TNG2B6w87b+qQnJjM8ov+4MYf9cteWAZC8/EIWglLa9b 4X5b2ByRnG/8FbBldYKoSTJ90eEi1CRRBzTHmeCuhCJeCC6pKhPnutFOXr1sVzDejpkG i47NaJklLmVmb01nyESn+ysob3tyrv+H6sVwz844HtxZ1N2zDccixfX65IEntI1kFkHi Abeb8ZcSq1pBXdTMkte2JPLkPm2x7SVin7zW7QP1+iAU3aJLf2ZRKvEnh4XCJ/NWKpZu YWWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745908576; x=1746513376; h=mime-version:user-agent:content-transfer-encoding:references :in-reply-to:date:cc:to:from:subject:message-id:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=zVjCaxLZ3wPir0lMAubJR3AWouoPbykeqi1W8lH3ZLU=; b=HKc4g8Ud9Ip7S+Zv0OVKAJ9LoCftH3yFK4rSI+ND+znQRmxGJQQNVXL5M3AAE57uOe xGx8n9FST0BZjIcU9SaGtAbvjrrjs+e67OyEyYmBA3A3R5UF/CrQIMVYnQ6D89KzsEaF +aU9fA1LQPLHiuM6QkND3N5cs/SIlyeTM5bpYzTGiJcBSPWdkINfQ2rZ44C1lm6aolQE 9wf7tPh27t6ThSG5xolBuayD+0xdZ9fgN0BCaL4+M7uBQDnAFEdNxKGtrAcO1YIPK5RR ypUDj6E0NnlV2XKsoUDpA+9aTdNZQrDJzzTDF13S15m4mWGdxGTz2h3cXDdeJfwhnJPf tjsw== X-Gm-Message-State: AOJu0Yyi8qM88kOMezXxeH0SKp1Q0as5Lda8ArTHLbhchibBYpyOk13t xgeffa4XMpsLzRvBYFervp2XU68cf6Ohwo3PdhqGpFH04+kYY+Pc9YzoiqAIMaQ= X-Gm-Gg: ASbGncu0/imPMOcvcMvdEmTtualkwnnznjS8Ov2Y0HU02oPbB9apbT9UtnvIau7qW8Y YJIu1C1A9Wxxb9hKkNjDo7B5LzpYwxR+9ogzFQfcqqF49sme07OIXPH3sYDhie4WKQh7NVpVqx6 QPs0B0RrXPj/mNYq0N1mpnnOShvhO9ua1gv89/qUkhBef9KP1CgAzFo3PYC/9TnSpG+s9Mc3XXk jsOzlW2fbXdWkJGE7aX/HAdsCEyCxFcv9hWnDViLs8XDYFUdq4ESQQJyc5OnaFh2isJMlvZA6Ye 9AoVxFfSMA/994X7TlYYtBT7xEDD2gVNE0cu1n2lSBZsH4vjLDRIOjkJxQ== X-Google-Smtp-Source: AGHT+IG7xrpWWo4aE7MOAl9FbqGmkfOf0+ufG5O93uPBUpcpRCKAPHD4xH49cLLIWancz6rMwVxcYw== X-Received: by 2002:a17:907:3fa5:b0:ac3:3e40:e183 with SMTP id a640c23a62f3a-acec84b7f9amr172389766b.3.1745908576219; Mon, 28 Apr 2025 23:36:16 -0700 (PDT) Received: from localhost.localdomain ([41.66.98.156]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5f7011fc469sm6955911a12.7.2025.04.28.23.36.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Apr 2025 23:36:15 -0700 (PDT) Message-ID: <10ff0fbe7f4d711300951431ad28254aa5bf2dc4.camel@cybertec.at> Subject: Re: Upsert error "column reference is ambiguous" From: Laurenz Albe To: Tim Starling , Tom Lane Cc: pgsql-general@lists.postgresql.org Date: Tue, 29 Apr 2025 08:36:14 +0200 In-Reply-To: <5fe1d1c9-662e-405e-aaed-21d15bdbea06@wikimedia.org> References: <697017.1745837694@sss.pgh.pa.us> <80f95342-cc09-4236-a2d7-68538fbfc41b@wikimedia.org> <774865.1745848449@sss.pgh.pa.us> <5fe1d1c9-662e-405e-aaed-21d15bdbea06@wikimedia.org> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable User-Agent: Evolution 3.54.3 (3.54.3-1.fc41) MIME-Version: 1.0 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk On Tue, 2025-04-29 at 08:36 +1000, Tim Starling wrote: > My code would be like >=20 > function upsert( $table, $names, $values, $key, $set ) { > =C2=A0=C2=A0=C2=A0=C2=A0 if ( $this->type =3D=3D=3D 'mysql' ) { > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $conflict =3D 'ON DUPLIC= ATE KEY UPDATE'; > =C2=A0=C2=A0=C2=A0=C2=A0 } else { > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 $conflict =3D "ON CONFLI= CT ($key) DO UPDATE SET"; > =C2=A0=C2=A0=C2=A0=C2=A0 } > =C2=A0=C2=A0=C2=A0=C2=A0 return $this->query( "INSERT INTO $table ($names= ) " . > =C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 "VALUES ($values) $confl= ict $set" ); > } >=20 > The parameters are a little bit more structured than that, but that=20 > gives you the idea. Another litle "if" to cater for PostgreSQL's "EXCLUDED." would be such a big problem? Yours, Laurenz Albe