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 1wCVTC-0023H1-1f for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Apr 2026 04:33:50 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wCVT9-009mHB-2K for pgsql-hackers@arkaria.postgresql.org; Tue, 14 Apr 2026 04:33:48 +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 1wCVT9-009mH3-0y for pgsql-hackers@lists.postgresql.org; Tue, 14 Apr 2026 04:33:48 +0000 Received: from mail-vk1-xa2a.google.com ([2607:f8b0:4864:20::a2a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wCVT7-00000000unf-2hqd for pgsql-hackers@lists.postgresql.org; Tue, 14 Apr 2026 04:33:47 +0000 Received: by mail-vk1-xa2a.google.com with SMTP id 71dfb90a1353d-56efdc96b05so3409240e0c.1 for ; Mon, 13 Apr 2026 21:33:45 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776141225; cv=none; d=google.com; s=arc-20240605; b=XaKrS6EKGiA5g/ho6DVjhKeDWZof1aXo1186+/bucWtcSgBpDst0Tlp8Pwc2p43+nH qxzOFyBn+AmRF8gRG0XBU54y8l+PEl0Mt6izT5g6EmZSQnSLmiOSxgbU7usd6958tmrk bYdT+wgnVuoMMF9fxn43QVfzvTv+OoOIP3+s4+6kde/9OulGc8VmqBG3teyQ2ua8oLFN WWqS4iEYEUUsRuZxy4BTEOheADbCCVY2q5kw7R2Amy8JbZUd9HLqscrAkdEHezIgjtLb ndJBKpOqKRmnIPK/VIJd4+1QMF9omnI0m+70P1cYMQZZ+mtFowqK4nuC5uh97mKCKgsU QyTg== 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=EJehYivmr723arUTX+aGqbeYwGNjyvlbP18Qa1WqkNw=; fh=SVQr3b7biKsaHwRa5l4rTGSbUDeUC8zr3GLnMB45zfA=; b=BOSxTkMqJKBzEq6+WRuQ1hzq5V4Lb69AMwsEgnj1d+TJa21OwBB5yk3YmZFCle0PbX FeD74IaFEsyr9mPEcwb2byjIH5q3IbhfoE72GAIWv0ge5yKec+Z3xi1pbE4dy2LgwBSb ebRN9KtqHIjr7QK3aqwsvdf+fzm3BOvCWNof+pdQl6/UiZQOkVj23KyQugqDLsePozju mwOuv0DDq6jrbgfK114S0/tOihPF7s95NrQA4QsfrbrMZAS8P6VVuhkZOtysmfDH8Yet ipBvqoX1crNuAUjee+fblEYpvCqhAJf7mTmjwfK08JzMdUGZDAHYMVZ2E5FI3qHZ4+Bk s3Sw==; 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=1776141225; x=1776746025; 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=EJehYivmr723arUTX+aGqbeYwGNjyvlbP18Qa1WqkNw=; b=Or+hPEEYFoP4mo0wGQo6Iz1IJHa01EyQjqK7UumlSdSnk+1lSVNUp6J8MAt6+xFaZl fymGdE8NEkGGwxy+VJdb+g9Me9hHSX7gW+Wfnjdo0D+EPBPh1SNjz/RVgz+kxzDznvav Mt9+KeA/wYtRV/2nUY9oR+Eab0DKGBi8b9vJ6k+GD0Vhn18QTJeVfgBICFG0u+my2F7H wwXGpWFbtmADuq1DfBWMijTn/gNBoNIxzBPF/Vfj2umcnRj1fCGbCx1CM+UXd9IhShHh ePphgJCUkgBsBRv+CJDbI1KOwg0pTq/KUdpu5uKfuoyJDcF2zs3SGIZwxZ0vyY5a0QXd nL6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776141225; x=1776746025; 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=EJehYivmr723arUTX+aGqbeYwGNjyvlbP18Qa1WqkNw=; b=R7rbq+Oge5U/dSCHVg2LEPU2vD+nDo6+kiFWovvt3xEmxVGJjk3QehIr28HGf5qIx4 /JU7nroufpr7muq8ObxyJUkJkrJDSYikx9GItowgQGErSHmTacEEf2JzR9hO3tflf629 K1q+s7kx+eHQQVC699Y2sFuyYgXqb/oGU3SpkEYhij53L5bKddF9aUNnKzBZR/G2TLgW FfgzcU9tTXmfH/9f+XeMAAs8pSXySr/tHHwy/MbCpMpzF47JowxCNKi3q9j6GnN7mvDi ZyvKlvdBa0bciZ+1rcGxcFIufuVBYHo2Y5dt2s/tF6RXmK5oVtk3BpQTcTZXyE+Qo4Sx Z+xg== X-Forwarded-Encrypted: i=1; AFNElJ8pBZeI93Y+LRJ6vooN8egCX0c76GC7o48tYYPSx0vCB37BLPhjHQQf6nF5yuT/PPTevCg23j5Tac7WQn0A@lists.postgresql.org X-Gm-Message-State: AOJu0YxzMs7+ByD0qnI2EAk3m2Ekv3ZcLEiG5nbCg5YfSuraJ8pgOfRr Eu6mTA9kdte2Ghf8VxNMB1jeqvQ5SagDHSk4ntw3PdSPmn5AdtEZRC46NPAFMIIRLigirojMnWL vDh7X2CkM3xGYCJZWgyywCI1YIJO2TmM= X-Gm-Gg: AeBDiev3p8W+kRjfWft9yjC780RYE9NjQInPAMN3cNaDw05Tqs7Ra9AqJ5LWb78SdEt Id+5BD9KSvVws5vV853vYa95DP3fXbe3Yc8BWYHH1OcJ0GDVQCcKOZ2Dzth9HSoxiuPF+xywSYL B/A6TKjCJ1ToeF9Ywo/TOVcyKmJEb8+XDWNcfy/OFdwaTxS/Pinc5yOdk3Qz0NwEzEJhKtZW8BX +DNA3J6XyyVcjGNdFqa7pAS128PyXvUBvAnjjqkCLJvlr0ufR9ButzKH0T2YXTn5f5UON0RtrmS XvdBTfS5SkhH4usMN08scr9lQC8n2j9RqPDF3o3c+rF7L4GydcTksMPR/CzHDsCCBB4xUyrLy5e HkY1fUmiZZspQwygSTgovtUqRbXmWu25qHLu8V5MsKpDEypCp2c+LdkXhqedGUkm/bCZGXFMG62 E4M5gxFW5QdkTjVbvqGHM= X-Received: by 2002:a05:6122:1810:b0:566:354d:9f4a with SMTP id 71dfb90a1353d-56f3bb21f97mr8177858e0c.1.1776141225027; Mon, 13 Apr 2026 21:33:45 -0700 (PDT) MIME-Version: 1.0 References: <85ac7f0e-d95f-4377-ade0-8941fd328012@eisentraut.org> <7d63ddfa-c735-4dfe-8c7a-4f1e2a621058@eisentraut.org> <4606deaa-7d65-4f22-8a78-356c3180be9d@eisentraut.org> <53f1c094-3c29-4ef6-a9bd-dc2e7894ceb0@eisentraut.org> In-Reply-To: From: jian he Date: Tue, 14 Apr 2026 12:33:07 +0800 X-Gm-Features: AQROBzAl72sPORbW2vOfJCofiS4mHzVyK9N8LrvVqbbkxntDjQoNXXQS2jw-X-4 Message-ID: Subject: Re: SQL:2011 Application Time Update & Delete To: SATYANARAYANA NARLAPURAM Cc: Peter Eisentraut , Paul A Jungwirth , Chao Li , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000ca09c1064f641aa3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000ca09c1064f641aa3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Apr 10, 2026 at 3:42=E2=80=AFAM SATYANARAYANA NARLAPURAM wrote: > >> Repro: >> >> CREATE TABLE t (id INT, valid_at daterange, val INT); >> INSERT INTO t VALUES (1, '[2026-01-01,2026-12-31)', 100); >> CREATE VIEW v AS SELECT * FROM t; >> >> CREATE FUNCTION v_trig() RETURNS trigger LANGUAGE plpgsql AS $$ >> BEGIN >> UPDATE t SET val =3D NEW.val WHERE id =3D OLD.id; >> RETURN NEW; >> END; >> $$; >> CREATE TRIGGER trg INSTEAD OF UPDATE ON v >> FOR EACH ROW EXECUTE FUNCTION v_trig(); >> >> -- This crashes the server: >> UPDATE v FOR PORTION OF valid_at FROM '2026-04-01' TO '2026-08-01' >> SET val =3D 999 WHERE id =3D 1; >> >> I am thinking we should just reject this case. Attached a draft patch to= fix the issue. > Yech, we should reject it. In RewriteQuery, we have: /* * If there was no unqualified INSTEAD rule, and the target relation * is a view without any INSTEAD OF triggers, see if the view can be * automatically updated. If so, we perform the necessary query * transformation here and add the resulting query to the * product_queries list, so that it gets recursively rewritten if * necessary. For MERGE, the view must be automatically updatable if * any of the merge actions lack a corresponding INSTEAD OF trigger. * * If the view cannot be automatically updated, we throw an error here * which is OK since the query would fail at runtime anyway. Throwing * the error here is preferable to the executor check since we have * more detailed information available about why the view isn't * updatable. */ if (!instead && rt_entry_relation->rd_rel->relkind =3D=3D RELKIND_VIEW && !view_has_instead_trigger(rt_entry_relation, event, parsetree->mergeActionList)) Per above, RewriteQuery does not rewrite the view relation to its base relation when the view has an INSTEAD OF trigger. In such cases, ExecInitModifyTable->ExecInitResultRelation initialize mtstate->resultRelInfo using the view relation itself (rather than the underlying base table). But ExecForPortionOfLeftovers->table_tuple_fetch_row_version requires the relation to physical storage. Therefore DELETE/UPDATE ... FOR PORTION OF operations cannot cope with views that have INSTEAD OF triggers. IMHO, rejecting it at RewriteQuery make more sense to me. Now the error message is: ERROR: UPDATE FOR PORTION OF is not supported for views with INSTEAD OF triggers ERROR: DELETE FOR PORTION OF is not supported for views with INSTEAD OF triggers -- jian https://www.enterprisedb.com/ --000000000000ca09c1064f641aa3 Content-Type: text/x-patch; charset="US-ASCII"; name="v10-0001-reject-instead-of-view-with-DELETE-UPDATE-FOR-PORTION-OF.patch" Content-Disposition: attachment; filename="v10-0001-reject-instead-of-view-with-DELETE-UPDATE-FOR-PORTION-OF.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mny4lfuh0 RnJvbSBmMzdiOGQ0MWMyMTFkOGYwNWIzZmU3Yjk2YTBiZjYxODg5MGU3MTcwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBqaWFuIGhlIDxqaWFuLnVuaXZlcnNhbGl0eUBnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMTQgQXByIDIwMjYgMTI6MTA6MDkgKzA4MDAKU3ViamVjdDogW1BBVENIIHYx MCAxLzFdIHJlamVjdCBpbnN0ZWFkIG9mIHZpZXcgd2l0aCBERUxFVEUvVVBEQVRFIEZPUiBQT1JU SU9OCiBPRgoKVmlld3Mgd2l0aCBJTlNURUFEIE9GIHRyaWdnZXJzIGNhbm5vdCByZXdyaXRlIHRo ZSBxdWVyeSB0byB0aGUgYmFzZSByZWxhdGlvbi4KVmlld3MgZG8gbm90IGhhdmUgcGh5c2ljYWwg cm93cy4gIEZPUiBQT1JUSU9OIE9GIHJlcXVpcmVzIGFjY2VzcyB0byB0aGUgcGh5c2ljYWwKcm93 IHRvIGNvbXB1dGUgdGVtcG9yYWwgbGVmdG92ZXJzLCBzbyB3ZSBtdXN0IGRpc2FsbG93IGl0IGhl cmUuCgpkaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBSGclMkJRRGQ3NGZuZDRvYkNS TXFWUzBBVldmJTNEY1NGSCUzREN2N3RyVEpXZ20lMkJfYmhUSzZ3JTQwbWFpbC5nbWFpbC5jb20K Y29tbWl0ZmVzdCBlbnRyeTogaHR0cHM6Ly9jb21taXRmZXN0LnBvc3RncmVzcWwub3JnL3BhdGNo LwotLS0KIHNyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYyAgICAgICAgIHwgMjgg KysrKysrKysrKysrKysrKysrKysKIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRp b25fb2Yub3V0IHwgMjEgKysrKysrKysrKysrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9mb3Jf cG9ydGlvbl9vZi5zcWwgICAgICB8IDIzICsrKysrKysrKysrKysrKysKIDMgZmlsZXMgY2hhbmdl ZCwgNzIgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3 cml0ZUhhbmRsZXIuYyBiL3NyYy9iYWNrZW5kL3Jld3JpdGUvcmV3cml0ZUhhbmRsZXIuYwppbmRl eCAwMjFjNzNmMWI2Ny4uZGJmYmZjYWYzNGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jld3Jp dGUvcmV3cml0ZUhhbmRsZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXdyaXRlL3Jld3JpdGVIYW5k bGVyLmMKQEAgLTQxNjYsNiArNDE2NiwyMCBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBhcnNldHJl ZSwgTGlzdCAqcmV3cml0ZV9ldmVudHMsIGludCBvcmlnX3J0X2xlbmd0aCwKIAkJCQkJCXBhcnNl dHJlZS0+dGFyZ2V0TGlzdCA9IGxhcHBlbmQocGFyc2V0cmVlLT50YXJnZXRMaXN0LCB0bGUpOwog CQkJCQl9CiAJCQkJfQorCQkJCWVsc2UgaWYgKHZpZXdfaGFzX2luc3RlYWRfdHJpZ2dlcihydF9l bnRyeV9yZWxhdGlvbiwgZXZlbnQsIE5JTCkpCisJCQkJeworCQkJCQkvKgorCQkJCQkgKiBWaWV3 cyB3aXRoIElOU1RFQUQgT0YgdHJpZ2dlcnMgY2Fubm90IHJld3JpdGUgdGhlIHF1ZXJ5CisJCQkJ CSAqIHRvIHRoZSBiYXNlIHJlbGF0aW9uLiBWaWV3cyBkbyBub3QgaGF2ZSBwaHlzaWNhbCByb3dz LgorCQkJCQkgKiBGT1IgUE9SVElPTiBPRiByZXF1aXJlcyBhY2Nlc3MgdG8gdGhlIHBoeXNpY2Fs IHJvdyB0bworCQkJCQkgKiBjb21wdXRlIHRlbXBvcmFsIGxlZnRvdmVycywgc28gd2UgbXVzdCBk aXNhbGxvdyBpdAorCQkJCQkgKiBoZXJlLgorCQkJCQkgKi8KKwkJCQkJaWYgKHBhcnNldHJlZS0+ Zm9yUG9ydGlvbk9mKQorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJyY29kZShFUlJD T0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCQkJZXJybXNnKCJV UERBVEUgRk9SIFBPUlRJT04gT0YgaXMgbm90IHN1cHBvcnRlZCBmb3Igdmlld3Mgd2l0aCBJTlNU RUFEIE9GIHRyaWdnZXJzIikpOworCQkJCX0KIAkJCX0KIAogCQkJcGFyc2V0cmVlLT50YXJnZXRM aXN0ID0KQEAgLTQyMzEsNiArNDI0NSwyMCBAQCBSZXdyaXRlUXVlcnkoUXVlcnkgKnBhcnNldHJl ZSwgTGlzdCAqcmV3cml0ZV9ldmVudHMsIGludCBvcmlnX3J0X2xlbmd0aCwKIAkJCQkJICovCiAJ CQkJCUFkZFF1YWwocGFyc2V0cmVlLCBwYXJzZXRyZWUtPmZvclBvcnRpb25PZi0+b3ZlcmxhcHNF eHByKTsKIAkJCQl9CisJCQkJZWxzZSBpZiAodmlld19oYXNfaW5zdGVhZF90cmlnZ2VyKHJ0X2Vu dHJ5X3JlbGF0aW9uLCBldmVudCwgTklMKSkKKwkJCQl7CisJCQkJCS8qCisJCQkJCSAqIFZpZXdz IHdpdGggSU5TVEVBRCBPRiB0cmlnZ2VycyBjYW5ub3QgcmV3cml0ZSB0aGUgcXVlcnkKKwkJCQkJ ICogdG8gdGhlIGJhc2UgcmVsYXRpb24uIFZpZXdzIGRvIG5vdCBoYXZlIHBoeXNpY2FsIHJvd3Mu CisJCQkJCSAqIEZPUiBQT1JUSU9OIE9GIHJlcXVpcmVzIGFjY2VzcyB0byB0aGUgcGh5c2ljYWwg cm93IHRvCisJCQkJCSAqIGNvbXB1dGUgdGVtcG9yYWwgbGVmdG92ZXJzLCBzbyB3ZSBtdXN0IGRp c2FsbG93IGl0CisJCQkJCSAqIGhlcmUuCisJCQkJCSAqLworCQkJCQlpZiAocGFyc2V0cmVlLT5m b3JQb3J0aW9uT2YpCisJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJCQllcnJtc2coIkRF TEVURSBGT1IgUE9SVElPTiBPRiBpcyBub3Qgc3VwcG9ydGVkIGZvciB2aWV3cyB3aXRoIElOU1RF QUQgT0YgdHJpZ2dlcnMiKSk7CisJCQkJfQogCQkJfQogCQl9CiAJCWVsc2UKZGlmZiAtLWdpdCBh L3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvZm9yX3BvcnRpb25fb2Yub3V0IGIvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9mb3JfcG9ydGlvbl9vZi5vdXQKaW5kZXggMzFmNzcyYzcyM2QuLjll M2MzMzdlMGUwIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0 aW9uX29mLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2Zvcl9wb3J0aW9uX29m Lm91dApAQCAtMjA5Nyw0ICsyMDk3LDI1IEBAIFNFTEVDVCAqIEZST00gdGVtcG9yYWxfcGFydGl0 aW9uZWRfNSBPUkRFUiBCWSBpZCwgdmFsaWRfYXQ7CiAoNCByb3dzKQogCiBEUk9QIFRBQkxFIHRl bXBvcmFsX3BhcnRpdGlvbmVkOworLS0gVGVzdDogRk9SIFBPUlRJT04gT0Ygc2hvdWxkIGJlIHJl amVjdGVkIG9uIHZpZXdzIHdpdGggSU5TVEVBRCBPRiB0cmlnZ2VycworQ1JFQVRFIFRBQkxFIGZw b19pbnN0ZWFkX2Jhc2UgKGlkIGludCwgdmFsaWRfYXQgZGF0ZXJhbmdlLCB2YWwgaW50KTsKK0lO U0VSVCBJTlRPIGZwb19pbnN0ZWFkX2Jhc2UgVkFMVUVTICgxLCAnWzIwMjQtMDEtMDEsMjAyNC0x Mi0zMSknLCAxMDApOworQ1JFQVRFIFZJRVcgZnBvX2luc3RlYWRfdmlldyBBUyBTRUxFQ1QgKiBG Uk9NIGZwb19pbnN0ZWFkX2Jhc2U7CitDUkVBVEUgRlVOQ1RJT04gZnBvX2luc3RlYWRfdHJpZ19m bigpIFJFVFVSTlMgdHJpZ2dlciBMQU5HVUFHRSBwbHBnc3FsIEFTICQkCitCRUdJTgorICAgIFJF VFVSTiBORVc7CitFTkQ7CiskJDsKK0NSRUFURSBUUklHR0VSIGZwb19pbnN0ZWFkX3RyaWcgSU5T VEVBRCBPRiBVUERBVEUgT04gZnBvX2luc3RlYWRfdmlldworICBGT1IgRUFDSCBST1cgRVhFQ1VU RSBGVU5DVElPTiBmcG9faW5zdGVhZF90cmlnX2ZuKCk7CitDUkVBVEUgVFJJR0dFUiBmcG9faW5z dGVhZF9kZWxfdHJpZyBJTlNURUFEIE9GIERFTEVURSBPTiBmcG9faW5zdGVhZF92aWV3CisgIEZP UiBFQUNIIFJPVyBFWEVDVVRFIEZVTkNUSU9OIGZwb19pbnN0ZWFkX3RyaWdfZm4oKTsKK1VQREFU RSBmcG9faW5zdGVhZF92aWV3IEZPUiBQT1JUSU9OIE9GIHZhbGlkX2F0IEZST00gJzIwMjQtMDQt MDEnIFRPICcyMDI0LTA4LTAxJworICAgIFNFVCB2YWwgPSA5OTkgV0hFUkUgaWQgPSAxOyAgLS0g ZXJyb3IKK0VSUk9SOiAgVVBEQVRFIEZPUiBQT1JUSU9OIE9GIGlzIG5vdCBzdXBwb3J0ZWQgZm9y IHZpZXdzIHdpdGggSU5TVEVBRCBPRiB0cmlnZ2VycworREVMRVRFIEZST00gZnBvX2luc3RlYWRf dmlldyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9NICcyMDI0LTA0LTAxJyBUTyAnMjAyNC0w OC0wMScKKyAgICBXSEVSRSBpZCA9IDE7ICAtLSBlcnJvcgorRVJST1I6ICBERUxFVEUgRk9SIFBP UlRJT04gT0YgaXMgbm90IHN1cHBvcnRlZCBmb3Igdmlld3Mgd2l0aCBJTlNURUFEIE9GIHRyaWdn ZXJzCitEUk9QIFZJRVcgZnBvX2luc3RlYWRfdmlldzsKK0RST1AgVEFCTEUgZnBvX2luc3RlYWRf YmFzZTsKIFJFU0VUIGRhdGVzdHlsZTsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3Fs L2Zvcl9wb3J0aW9uX29mLnNxbCBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29m LnNxbAppbmRleCBkNDA2MmFjZjFkMS4uZDQ2MDIxNzFjOTAgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0 L3JlZ3Jlc3Mvc3FsL2Zvcl9wb3J0aW9uX29mLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3Nx bC9mb3JfcG9ydGlvbl9vZi5zcWwKQEAgLTEzNjUsNCArMTM2NSwyNyBAQCBTRUxFQ1QgKiBGUk9N IHRlbXBvcmFsX3BhcnRpdGlvbmVkXzUgT1JERVIgQlkgaWQsIHZhbGlkX2F0OwogCiBEUk9QIFRB QkxFIHRlbXBvcmFsX3BhcnRpdGlvbmVkOwogCistLSBUZXN0OiBGT1IgUE9SVElPTiBPRiBzaG91 bGQgYmUgcmVqZWN0ZWQgb24gdmlld3Mgd2l0aCBJTlNURUFEIE9GIHRyaWdnZXJzCitDUkVBVEUg VEFCTEUgZnBvX2luc3RlYWRfYmFzZSAoaWQgaW50LCB2YWxpZF9hdCBkYXRlcmFuZ2UsIHZhbCBp bnQpOworSU5TRVJUIElOVE8gZnBvX2luc3RlYWRfYmFzZSBWQUxVRVMgKDEsICdbMjAyNC0wMS0w MSwyMDI0LTEyLTMxKScsIDEwMCk7CitDUkVBVEUgVklFVyBmcG9faW5zdGVhZF92aWV3IEFTIFNF TEVDVCAqIEZST00gZnBvX2luc3RlYWRfYmFzZTsKK0NSRUFURSBGVU5DVElPTiBmcG9faW5zdGVh ZF90cmlnX2ZuKCkgUkVUVVJOUyB0cmlnZ2VyIExBTkdVQUdFIHBscGdzcWwgQVMgJCQKK0JFR0lO CisgICAgUkVUVVJOIE5FVzsKK0VORDsKKyQkOworQ1JFQVRFIFRSSUdHRVIgZnBvX2luc3RlYWRf dHJpZyBJTlNURUFEIE9GIFVQREFURSBPTiBmcG9faW5zdGVhZF92aWV3CisgIEZPUiBFQUNIIFJP VyBFWEVDVVRFIEZVTkNUSU9OIGZwb19pbnN0ZWFkX3RyaWdfZm4oKTsKK0NSRUFURSBUUklHR0VS IGZwb19pbnN0ZWFkX2RlbF90cmlnIElOU1RFQUQgT0YgREVMRVRFIE9OIGZwb19pbnN0ZWFkX3Zp ZXcKKyAgRk9SIEVBQ0ggUk9XIEVYRUNVVEUgRlVOQ1RJT04gZnBvX2luc3RlYWRfdHJpZ19mbigp OworCitVUERBVEUgZnBvX2luc3RlYWRfdmlldyBGT1IgUE9SVElPTiBPRiB2YWxpZF9hdCBGUk9N ICcyMDI0LTA0LTAxJyBUTyAnMjAyNC0wOC0wMScKKyAgICBTRVQgdmFsID0gOTk5IFdIRVJFIGlk ID0gMTsgIC0tIGVycm9yCisKK0RFTEVURSBGUk9NIGZwb19pbnN0ZWFkX3ZpZXcgRk9SIFBPUlRJ T04gT0YgdmFsaWRfYXQgRlJPTSAnMjAyNC0wNC0wMScgVE8gJzIwMjQtMDgtMDEnCisgICAgV0hF UkUgaWQgPSAxOyAgLS0gZXJyb3IKKworRFJPUCBWSUVXIGZwb19pbnN0ZWFkX3ZpZXc7CitEUk9Q IFRBQkxFIGZwb19pbnN0ZWFkX2Jhc2U7CisKIFJFU0VUIGRhdGVzdHlsZTsKLS0gCjIuMzQuMQoK --000000000000ca09c1064f641aa3--