Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:46976 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 5765 invoked from network); 10 Feb 2010 16:55:19 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 10 Feb 2010 16:55:19 -0000 Authentication-Results: pb1.pair.com header.from=ewgraf@gmail.com; sender-id=pass; domainkeys=bad Authentication-Results: pb1.pair.com smtp.mail=ewgraf@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 72.14.220.156 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: ewgraf@gmail.com X-Host-Fingerprint: 72.14.220.156 fg-out-1718.google.com Received: from [72.14.220.156] ([72.14.220.156:32468] helo=fg-out-1718.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id BB/41-19537-4F4E27B4 for ; Wed, 10 Feb 2010 11:55:18 -0500 Received: by fg-out-1718.google.com with SMTP id 16so159797fgg.11 for ; Wed, 10 Feb 2010 08:55:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:in-reply-to:references :date:message-id:subject:from:to:cc:content-type; bh=cNqc1qBu3JqYv/RME8SfEoaNSMRLiqdxrNuU9k4KBug=; b=TDXhmBgXM+l3H5gTff1fbFKCC3yJNikkWLdUq1avQQYyksKhJ28EGOgD8DXWWoucxn z0jOgyZXeNllS/D+q/eUtxbAn9h38thG13ZeSSXyC/etjSndrs6Znehuiho+EpB+HXQC 0PKFEnJriGJssgEX22YYxto53gQonHZwN7b4c= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=Sv8JqmTOEX2p5h2W95ZrX8Voznudl+nskoRGdAThRacAVAuKUhB+KYUTSUDQivWmMM v92LSQkqlNQBOmFabcyW/C/UwUgzVPbH7VNiDfwANa6LbPwDiv3IKkjaKXrATW6QQLix z1pWtEz30QT22D4WnrMiZi/OHWX8DA7fddjV8= MIME-Version: 1.0 Received: by 10.216.86.206 with SMTP id w56mr326603wee.1.1265820913643; Wed, 10 Feb 2010 08:55:13 -0800 (PST) In-Reply-To: References: <1265723806.2988.193.camel@guybrush> <1265729924.2988.408.camel@guybrush> Date: Wed, 10 Feb 2010 21:55:13 +0500 Message-ID: To: Pierre Joye Cc: internals@lists.php.net Content-Type: multipart/mixed; boundary=0016e6d783fce83203047f41e50c Subject: Re: [PHP-DEV] PATCH for bug #47199 From: ewgraf@gmail.com (Sokolov Evgeniy) --0016e6d783fce83203047f41e50c Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable No problem. I will remember for the future 2010/2/10 Pierre Joye : > Can you attach the patch instead of copying it in your post? Simply > name it mypatch.txt (.txt is important for the list). > > 2010/2/10 Sokolov Evgeniy : >> Thank you very much. This patch is passed, also as other patches from >> this extension. It's time for choose next bug :) >> >> >> >> Index: ext/pgsql/tests/bug47199.phpt >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> --- ext/pgsql/tests/bug47199.phpt =C2=A0 =C2=A0 =C2=A0 (revision 0) >> +++ ext/pgsql/tests/bug47199.phpt =C2=A0 =C2=A0 =C2=A0 (revision 0) >> @@ -0,0 +1,23 @@ >> +--TEST-- >> +Bug #47199 =C2=A0pg_delete fails on NULL >> +--SKIPIF-- >> +> +require_once('skipif.inc'); >> +?> >> +--FILE-- >> +> + >> +require_once('config.inc'); >> + >> +$dbh =3D @pg_connect($conn_str); >> +$tbl_name =3D 'test_47199'; >> +@pg_query("DROP TABLE $tbl_name"); >> +pg_query("CREATE TABLE $tbl_name (null_field INT, not_null_field INT)")= ; >> +print(pg_delete($dbh, $tbl_name, array('null_field' =3D> NULL, >> 'not_null_field' =3D> 2),PGSQL_DML_STRING)); >> +@pg_query("DROP TABLE $tbl_name"); >> +pg_close($dbh); >> +echo PHP_EOL."Done".PHP_EOL; >> +?> >> +--EXPECTF-- >> +DELETE FROM %s WHERE null_field IS NULL AND not_null_field=3D2; >> +Done >> Index: ext/pgsql/pgsql.c >> =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D >> --- ext/pgsql/pgsql.c =C2=A0 (revision 294790) >> +++ ext/pgsql/pgsql.c =C2=A0 (working copy) >> @@ -5523,7 +5523,7 @@ >> =C2=A0} >> =C2=A0/* }}} */ >> >> -static inline int build_assignment_string(smart_str *querystr, >> HashTable *ht, const char *pad, int pad_len TSRMLS_DC) >> +static inline int build_assignment_string(smart_str *querystr, >> HashTable *ht, int where_cond, const char *pad, int pad_len TSRMLS_DC) >> =C2=A0{ >> =C2=A0 =C2=A0 =C2=A0 HashPosition pos; >> =C2=A0 =C2=A0 =C2=A0 uint fld_len; >> @@ -5542,8 +5542,13 @@ >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 return -1; >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 smart_str_appendl(query= str, fld, fld_len - 1); >> - =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 smart_str_appendc(que= rystr, '=3D'); >> >> + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 if (where_cond && Z_T= YPE_PP(val) =3D=3D IS_STRING && >> !strcmp(Z_STRVAL_PP(val), "NULL")) { >> + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 smart_str_appends(querystr, " IS "); >> + =C2=A0 =C2=A0 =C2=A0 =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 =C2=A0 =C2=A0 = =C2=A0 smart_str_appendc(querystr, '=3D'); >> + =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 } >> + >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 switch(Z_TYPE_PP(val)) = { >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 case IS_STRING: >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 smart_str_appendl(querystr, >> Z_STRVAL_PP(val), Z_STRLEN_PP(val)); >> @@ -5604,12 +5609,12 @@ >> =C2=A0 =C2=A0 =C2=A0 smart_str_appends(&querystr, table); >> =C2=A0 =C2=A0 =C2=A0 smart_str_appends(&querystr, " SET "); >> >> - =C2=A0 =C2=A0 =C2=A0 if (build_assignment_string(&querystr, Z_ARRVAL_P= (var_array), ",", 1 >> TSRMLS_CC)) >> + =C2=A0 =C2=A0 =C2=A0 if (build_assignment_string(&querystr, Z_ARRVAL_P= (var_array), 0, >> ",", 1 TSRMLS_CC)) >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto cleanup; >> >> =C2=A0 =C2=A0 =C2=A0 smart_str_appends(&querystr, " WHERE "); >> >> - =C2=A0 =C2=A0 =C2=A0 if (build_assignment_string(&querystr, Z_ARRVAL_P= (ids_array), " AND >> ", sizeof(" AND ")-1 TSRMLS_CC)) >> + =C2=A0 =C2=A0 =C2=A0 if (build_assignment_string(&querystr, Z_ARRVAL_P= (ids_array), 1, " >> AND ", sizeof(" AND ")-1 TSRMLS_CC)) >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto cleanup; >> >> =C2=A0 =C2=A0 =C2=A0 smart_str_appendc(&querystr, ';'); >> @@ -5705,7 +5710,7 @@ >> =C2=A0 =C2=A0 =C2=A0 smart_str_appends(&querystr, table); >> =C2=A0 =C2=A0 =C2=A0 smart_str_appends(&querystr, " WHERE "); >> >> - =C2=A0 =C2=A0 =C2=A0 if (build_assignment_string(&querystr, Z_ARRVAL_P= (ids_array), " AND >> ", sizeof(" AND ")-1 TSRMLS_CC)) >> + =C2=A0 =C2=A0 =C2=A0 if (build_assignment_string(&querystr, Z_ARRVAL_P= (ids_array), 1, " >> AND ", sizeof(" AND ")-1 TSRMLS_CC)) >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto cleanup; >> >> =C2=A0 =C2=A0 =C2=A0 smart_str_appendc(&querystr, ';'); >> @@ -5841,7 +5846,7 @@ >> =C2=A0 =C2=A0 =C2=A0 smart_str_appends(&querystr, table); >> =C2=A0 =C2=A0 =C2=A0 smart_str_appends(&querystr, " WHERE "); >> >> - =C2=A0 =C2=A0 =C2=A0 if (build_assignment_string(&querystr, Z_ARRVAL_P= (ids_array), " AND >> ", sizeof(" AND ")-1 TSRMLS_CC)) >> + =C2=A0 =C2=A0 =C2=A0 if (build_assignment_string(&querystr, Z_ARRVAL_P= (ids_array), 1, " >> AND ", sizeof(" AND ")-1 TSRMLS_CC)) >> =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 goto cleanup; >> >> =C2=A0 =C2=A0 =C2=A0 smart_str_appendc(&querystr, ';'); >> >> >> >> >> 2010/2/9 Johannes Schl=C3=BCter : >>> Hi, >>> >>> On Tue, 2010-02-09 at 20:11 +0500, Sokolov Evgeniy wrote: >>>> > did you really run this test and was it successful? - doesn't lookli= ke >>>> > for me. >>>> I just run "php tests/27_bug47199.phpt" and check the result output. >>>> Is this correct way? >>> >>> The easy way to run it using the test Framework is by executing >>> >>> =C2=A0 make test TESTS=3Dtests/27_bug47199.phpt >>> >>> from your build directory which will prepare some environment things an= d >>> then run run-tests.php from PHP's source directory which has the >>> implementation of our test system, you can also run it directly to have >>> more ocntrol. See README.TESTING in the php-src root folder and >>> http://qa.php.net/write-test.php for more details on the test system. >>> >>> If you run your test it will tell you it failed as you're tests EXPECTF >>> section has to look something like this: >>> >>> --EXPECTF-- >>> DELETE FROM %s WHERE null_field IS NULL AND not_null_field=3D2; >>> Done >>> >>> Mind the %s place holder there! >>> >>>> > And please also add a link to the patch to the bug report >>>> Can it be link on pastebin.org? For example http://pastebin.org/88880 >>> >>> I don't know how persistent these pastebins are, >>> http://news.php.net/php.internals/46965 might be an alternative link >>> though :-) >>> >>> johannes >> >> >> best regards >> >> -- >> PHP Internals - PHP Runtime Development Mailing List >> To unsubscribe, visit: http://www.php.net/unsub.php >> >> > > > > -- > Pierre > > @pierrejoye | http://blog.thepimp.net | http://www.libgd.org > --=20 -- =D0=A1 =D1=83=D0=B2=D0=B0=D0=B6=D0=B5=D0=BD=D0=B8=D0=B5=D0=BC, =D0=A1=D0=BE= =D0=BA=D0=BE=D0=BB=D0=BE=D0=B2 =D0=95=D0=B2=D0=B3=D0=B5=D0=BD=D0=B8=D0=B9 --0016e6d783fce83203047f41e50c Content-Type: text/plain; charset=US-ASCII; name="patch_bug47199.txt" Content-Disposition: attachment; filename="patch_bug47199.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_g5id0br50 SW5kZXg6IGV4dC9wZ3NxbC90ZXN0cy9idWc0NzE5OS5waHB0Cj09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGV4dC9w Z3NxbC90ZXN0cy9idWc0NzE5OS5waHB0CShyZXZpc2lvbiAwKQorKysgZXh0L3Bnc3FsL3Rlc3Rz L2J1ZzQ3MTk5LnBocHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMjMgQEAKKy0tVEVTVC0tCitC dWcgIzQ3MTk5ICBwZ19kZWxldGUgZmFpbHMgb24gTlVMTAorLS1TS0lQSUYtLQorPD9waHAgCity ZXF1aXJlX29uY2UoJ3NraXBpZi5pbmMnKTsKKz8+CistLUZJTEUtLQorPD9waHAKKworcmVxdWly ZV9vbmNlKCdjb25maWcuaW5jJyk7CisKKyRkYmggPSBAcGdfY29ubmVjdCgkY29ubl9zdHIpOwor JHRibF9uYW1lID0gJ3Rlc3RfNDcxOTknOworQHBnX3F1ZXJ5KCJEUk9QIFRBQkxFICR0YmxfbmFt ZSIpOworcGdfcXVlcnkoIkNSRUFURSBUQUJMRSAkdGJsX25hbWUgKG51bGxfZmllbGQgSU5ULCBu b3RfbnVsbF9maWVsZCBJTlQpIik7CitwcmludChwZ19kZWxldGUoJGRiaCwgJHRibF9uYW1lLCBh cnJheSgnbnVsbF9maWVsZCcgPT4gTlVMTCwgJ25vdF9udWxsX2ZpZWxkJyA9PiAyKSxQR1NRTF9E TUxfU1RSSU5HKSk7CitAcGdfcXVlcnkoIkRST1AgVEFCTEUgJHRibF9uYW1lIik7CitwZ19jbG9z ZSgkZGJoKTsKK2VjaG8gUEhQX0VPTC4iRG9uZSIuUEhQX0VPTDsKKz8+CistLUVYUEVDVEYtLQor REVMRVRFIEZST00gJXMgV0hFUkUgbnVsbF9maWVsZCBJUyBOVUxMIEFORCBub3RfbnVsbF9maWVs ZD0yOworRG9uZQpJbmRleDogZXh0L3Bnc3FsL3Bnc3FsLmMKPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZXh0L3Bn c3FsL3Bnc3FsLmMJKHJldmlzaW9uIDI5NDc5MCkKKysrIGV4dC9wZ3NxbC9wZ3NxbC5jCSh3b3Jr aW5nIGNvcHkpCkBAIC01NTIzLDcgKzU1MjMsNyBAQAogfQogLyogfX19ICovCiAKLXN0YXRpYyBp bmxpbmUgaW50IGJ1aWxkX2Fzc2lnbm1lbnRfc3RyaW5nKHNtYXJ0X3N0ciAqcXVlcnlzdHIsIEhh c2hUYWJsZSAqaHQsIGNvbnN0IGNoYXIgKnBhZCwgaW50IHBhZF9sZW4gVFNSTUxTX0RDKQorc3Rh dGljIGlubGluZSBpbnQgYnVpbGRfYXNzaWdubWVudF9zdHJpbmcoc21hcnRfc3RyICpxdWVyeXN0 ciwgSGFzaFRhYmxlICpodCwgaW50IHdoZXJlX2NvbmQsIGNvbnN0IGNoYXIgKnBhZCwgaW50IHBh ZF9sZW4gVFNSTUxTX0RDKQogewogCUhhc2hQb3NpdGlvbiBwb3M7CiAJdWludCBmbGRfbGVuOwpA QCAtNTU0Miw4ICs1NTQyLDEzIEBACiAJCQlyZXR1cm4gLTE7CiAJCX0KIAkJc21hcnRfc3RyX2Fw cGVuZGwocXVlcnlzdHIsIGZsZCwgZmxkX2xlbiAtIDEpOwotCQlzbWFydF9zdHJfYXBwZW5kYyhx dWVyeXN0ciwgJz0nKTsKIAkJCisJCWlmICh3aGVyZV9jb25kICYmIFpfVFlQRV9QUCh2YWwpID09 IElTX1NUUklORyAmJiAhc3RyY21wKFpfU1RSVkFMX1BQKHZhbCksICJOVUxMIikpIHsKKwkJCXNt YXJ0X3N0cl9hcHBlbmRzKHF1ZXJ5c3RyLCAiIElTICIpOworCQl9IGVsc2UgeworCQkJc21hcnRf c3RyX2FwcGVuZGMocXVlcnlzdHIsICc9Jyk7CisJCX0KKwkJCiAJCXN3aXRjaChaX1RZUEVfUFAo dmFsKSkgewogCQkJY2FzZSBJU19TVFJJTkc6CiAJCQkJc21hcnRfc3RyX2FwcGVuZGwocXVlcnlz dHIsIFpfU1RSVkFMX1BQKHZhbCksIFpfU1RSTEVOX1BQKHZhbCkpOwpAQCAtNTYwNCwxMiArNTYw OSwxMiBAQAogCXNtYXJ0X3N0cl9hcHBlbmRzKCZxdWVyeXN0ciwgdGFibGUpOwogCXNtYXJ0X3N0 cl9hcHBlbmRzKCZxdWVyeXN0ciwgIiBTRVQgIik7CiAKLQlpZiAoYnVpbGRfYXNzaWdubWVudF9z dHJpbmcoJnF1ZXJ5c3RyLCBaX0FSUlZBTF9QKHZhcl9hcnJheSksICIsIiwgMSBUU1JNTFNfQ0Mp KQorCWlmIChidWlsZF9hc3NpZ25tZW50X3N0cmluZygmcXVlcnlzdHIsIFpfQVJSVkFMX1AodmFy X2FycmF5KSwgMCwgIiwiLCAxIFRTUk1MU19DQykpCiAJCWdvdG8gY2xlYW51cDsKIAkKIAlzbWFy dF9zdHJfYXBwZW5kcygmcXVlcnlzdHIsICIgV0hFUkUgIik7CiAJCi0JaWYgKGJ1aWxkX2Fzc2ln bm1lbnRfc3RyaW5nKCZxdWVyeXN0ciwgWl9BUlJWQUxfUChpZHNfYXJyYXkpLCAiIEFORCAiLCBz aXplb2YoIiBBTkQgIiktMSBUU1JNTFNfQ0MpKQorCWlmIChidWlsZF9hc3NpZ25tZW50X3N0cmlu ZygmcXVlcnlzdHIsIFpfQVJSVkFMX1AoaWRzX2FycmF5KSwgMSwgIiBBTkQgIiwgc2l6ZW9mKCIg QU5EICIpLTEgVFNSTUxTX0NDKSkKIAkJZ290byBjbGVhbnVwOwogCiAJc21hcnRfc3RyX2FwcGVu ZGMoJnF1ZXJ5c3RyLCAnOycpOwkKQEAgLTU3MDUsNyArNTcxMCw3IEBACiAJc21hcnRfc3RyX2Fw cGVuZHMoJnF1ZXJ5c3RyLCB0YWJsZSk7CiAJc21hcnRfc3RyX2FwcGVuZHMoJnF1ZXJ5c3RyLCAi IFdIRVJFICIpOwogCi0JaWYgKGJ1aWxkX2Fzc2lnbm1lbnRfc3RyaW5nKCZxdWVyeXN0ciwgWl9B UlJWQUxfUChpZHNfYXJyYXkpLCAiIEFORCAiLCBzaXplb2YoIiBBTkQgIiktMSBUU1JNTFNfQ0Mp KQorCWlmIChidWlsZF9hc3NpZ25tZW50X3N0cmluZygmcXVlcnlzdHIsIFpfQVJSVkFMX1AoaWRz X2FycmF5KSwgMSwgIiBBTkQgIiwgc2l6ZW9mKCIgQU5EICIpLTEgVFNSTUxTX0NDKSkKIAkJZ290 byBjbGVhbnVwOwogCiAJc21hcnRfc3RyX2FwcGVuZGMoJnF1ZXJ5c3RyLCAnOycpOwpAQCAtNTg0 MSw3ICs1ODQ2LDcgQEAKIAlzbWFydF9zdHJfYXBwZW5kcygmcXVlcnlzdHIsIHRhYmxlKTsKIAlz bWFydF9zdHJfYXBwZW5kcygmcXVlcnlzdHIsICIgV0hFUkUgIik7CiAKLQlpZiAoYnVpbGRfYXNz aWdubWVudF9zdHJpbmcoJnF1ZXJ5c3RyLCBaX0FSUlZBTF9QKGlkc19hcnJheSksICIgQU5EICIs IHNpemVvZigiIEFORCAiKS0xIFRTUk1MU19DQykpCisJaWYgKGJ1aWxkX2Fzc2lnbm1lbnRfc3Ry aW5nKCZxdWVyeXN0ciwgWl9BUlJWQUxfUChpZHNfYXJyYXkpLCAxLCAiIEFORCAiLCBzaXplb2Yo IiBBTkQgIiktMSBUU1JNTFNfQ0MpKQogCQlnb3RvIGNsZWFudXA7CiAKIAlzbWFydF9zdHJfYXBw ZW5kYygmcXVlcnlzdHIsICc7Jyk7Cg== --0016e6d783fce83203047f41e50c--