PostgreSQL driver for Joomla review

PostgreSQL driver for Joomla review

am 20.10.2009 14:02:47 von Thom Brown

If anyone has a moment, could they review the PostgreSQL driver I
wrote for Joomla's next major release? The developers at Joomla have
listened to the persistent noise created about only having MySQL as an
option and are now accepting submissions for alternative database
systems. (see http://groups.google.com/group/joomla-dev-cms/browse_thread/ thread/1382dc6f4af56278#msg_9b95648941ef6fa7
for this development)

My submission can be found at:
http://joomlacode.org/gf/project/joomla/tracker/?action=Trac kerItemEdit&tracker_item_id=18384

Things to watch out for a version-dependent features and clumsy implementations.

Thanks

Thom Brown

--
Sent via pgsql-php mailing list (pgsql-php@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-php

Re: PostgreSQL driver for Joomla review

am 20.10.2009 14:52:15 von Csaba Nagy

Hi Thom,

I would like to review it, but I get "403 - Forbidden" when clicking:

http://downloads.joomlacode.org/trackeritem/4/5/0/45041/post gresql.php

Not sure what that means, probably I need some kind of login to the
joomla tracker system, and I don't have one, and I would prefer not to
create one... is it possible to access that somehow without full access
to the joomla tracker ?

Cheers,
Csaba.

On Tue, 2009-10-20 at 14:02 +0200, Thom Brown wrote:
> If anyone has a moment, could they review the PostgreSQL driver I
> wrote for Joomla's next major release? The developers at Joomla have
> listened to the persistent noise created about only having MySQL as an
> option and are now accepting submissions for alternative database
> systems. (see http://groups.google.com/group/joomla-dev-cms/browse_thread/ thread/1382dc6f4af56278#msg_9b95648941ef6fa7
> for this development)
>
> My submission can be found at:
> http://joomlacode.org/gf/project/joomla/tracker/?action=Trac kerItemEdit&tracker_item_id=18384
>
> Things to watch out for a version-dependent features and clumsy implementations.
>
> Thanks
>
> Thom Brown
>


--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Re: [GENERAL] PostgreSQL driver for Joomla review

am 20.10.2009 15:00:17 von Thom Brown

--0023545bd064e6123104765d7297
Content-Type: text/plain; charset=ISO-8859-1

2009/10/20 Csaba Nagy :
> Hi Thom,
>
> I would like to review it, but I get "403 - Forbidden" when clicking:
>
> http://downloads.joomlacode.org/trackeritem/4/5/0/45041/post gresql.php
>
> Not sure what that means, probably I need some kind of login to the
> joomla tracker system, and I don't have one, and I would prefer not to
> create one... is it possible to access that somehow without full access
> to the joomla tracker ?

Hi Csaba,

I didn't realise it wasn't publicly viewable. I've attached a copy of
the php file anyhow. Can you see the tracker page at all?

Thom

--0023545bd064e6123104765d7297
Content-Type: application/octet-stream; name="postgresql.php"
Content-Disposition: attachment; filename="postgresql.php"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g10nutma0

PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pgo8
IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBU
cmFuc2l0aW9uYWwvL0VOIgogICAgICAgICAiaHR0cDovL3d3dy53My5vcmcv
VFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1s
IHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiB4bWw6bGFu
Zz0iZW4iIGxhbmc9ImVuIj4KIDxoZWFkPgogIDx0aXRsZT40MDMgLSBGb3Ji
aWRkZW48L3RpdGxlPgogPC9oZWFkPgogPGJvZHk+CiAgPGgxPjQwMyAtIEZv
cmJpZGRlbjwvaDE+CiA8L2JvZHk+CjwvaHRtbD4K

--0023545bd064e6123104765d7297
Content-Type: text/plain
Content-Disposition: inline
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable


--=20
Sent via pgsql-php mailing list (pgsql-php@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-php

--0023545bd064e6123104765d7297--

Re: [GENERAL] PostgreSQL driver for Joomla review

am 20.10.2009 15:28:58 von Thom Brown

--0023545bd06465813804765dd9dc
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

2009/10/20 Reid Thompson :
> your attachment contains this...
>
>
> > =A0 =A0 =A0 =A0 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>
> =A0
> =A0403 - Forbidden
> =A0
> =A0
> =A0

403 - Forbidden


> =A0
>
>

Erk.. that's weird. I got that too even after being logged in. I'm
not sure how anyone can review it if no-one has access to it.

I've attached my working version which differs only slightly to
conform with coding-styles required by Joomla.

Apologies

Thom

--0023545bd06465813804765dd9dc
Content-Type: application/octet-stream; name="postgresql.php"
Content-Disposition: attachment; filename="postgresql.php"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_g10oxhrj0

PD9waHANCi8qKg0KKiBAdmVyc2lvbgkJJElkOiBwb3N0Z3Jlc3FsLnBocCAk
DQoqIEBwYWNrYWdlCQlKb29tbGEuRnJhbWV3b3JrDQoqIEBzdWJwYWNrYWdl
CURhdGFiYXNlDQoqIEBjb3B5cmlnaHQJQ29weXJpZ2h0IChDKSAyMDA5IE9w
ZW4gU291cmNlIE1hdHRlcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQoqIEBs
aWNlbnNlCQlHTlUvR1BMLCBzZWUgTElDRU5TRS5waHANCiogSm9vbWxhISBp
cyBmcmVlIHNvZnR3YXJlLiBUaGlzIHZlcnNpb24gbWF5IGhhdmUgYmVlbiBt
b2RpZmllZCBwdXJzdWFudA0KKiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UsIGFuZCBhcyBkaXN0cmlidXRlZCBpdCBpbmNsdWRlcyBvcg0K
KiBpcyBkZXJpdmF0aXZlIG9mIHdvcmtzIGxpY2Vuc2VkIHVuZGVyIHRoZSBH
TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvcg0KKiBvdGhlciBmcmVlIG9y
IG9wZW4gc291cmNlIHNvZnR3YXJlIGxpY2Vuc2VzLg0KKiBTZWUgQ09QWVJJ
R0hULnBocCBmb3IgY29weXJpZ2h0IG5vdGljZXMgYW5kIGRldGFpbHMuDQoq
Lw0KDQovLyBDaGVjayB0byBlbnN1cmUgdGhpcyBmaWxlIGlzIHdpdGhpbiB0
aGUgcmVzdCBvZiB0aGUgZnJhbWV3b3JrDQpkZWZpbmVkKCdKUEFUSF9CQVNF
Jykgb3IgZGllKCk7DQoNCi8qKg0KICogUG9zdGdyZVNRTCBkYXRhYmFzZSBk
cml2ZXINCiAqDQogKiBAcGFja2FnZQkJSm9vbWxhLkZyYW1ld29yaw0KICog
QHN1YnBhY2thZ2UJRGF0YWJhc2UNCiAqIEBzaW5jZQkJMS4wDQogKi8NCmNs
YXNzIEpEYXRhYmFzZVBvc3RncmVTUUwgZXh0ZW5kcyBKRGF0YWJhc2UNCnsN
CgkvKioNCgkgKiBUaGUgZGF0YWJhc2UgZHJpdmVyIG5hbWUNCgkgKg0KCSAq
IEB2YXIgc3RyaW5nDQoJICovDQoJdmFyICRuYW1lCQkJPSAncG9zdGdyZXNx
bCc7DQoNCgkvKioNCgkgKiAgVGhlIG51bGwvemVybyBkYXRlIHN0cmluZw0K
CSAqDQoJICogQHZhciBzdHJpbmcNCgkgKi8NCgl2YXIgJF9udWxsRGF0ZQkJ
PSAnZXBvY2gnOw0KDQoJLyoqDQoJICogUXVvdGUgZm9yIG5hbWVkIG9iamVj
dHMNCgkgKg0KCSAqIEB2YXIgc3RyaW5nDQoJICovDQoJdmFyICRfbmFtZVF1
b3RlCQk9ICciJzsNCg0KCS8qKg0KCSAqIE9wZXJhdG9yIHVzZWQgZm9yIGNv
bmNhdGVuYXRpb24NCgkgKg0KCSAqIEB2YXIgc3RyaW5nDQoJICovDQoJdmFy
ICRfY29uY2F0X29wZXJhdG9yCT0gJ3x8JzsNCg0KCS8qKg0KCSAqIElEIHJl
dHVybmVkIGJ5IGxhc3QgaW5zZXJ0IHN0YXRlbWVudA0KCSAqDQoJICogQHZh
ciBpbnRlZ2VyDQoJICovDQoJdmFyICRfaW5zZXJ0X2lkCQk9IDA7DQoNCg0K
CS8qKg0KCSogRGF0YWJhc2Ugb2JqZWN0IGNvbnN0cnVjdG9yDQoJKg0KCSog
QGFjY2VzcwlwdWJsaWMNCgkqIEBwYXJhbQlhcnJheQlMaXN0IG9mIG9wdGlv
bnMgdXNlZCB0byBjb25maWd1cmUgdGhlIGNvbm5lY3Rpb24NCgkqIEBzaW5j
ZQkxLjUNCgkqIEBzZWUJCUpEYXRhYmFzZQ0KCSovDQoJZnVuY3Rpb24gX19j
b25zdHJ1Y3QoICRvcHRpb25zICkNCgl7DQoJCSRob3N0CQk9IGFycmF5X2tl
eV9leGlzdHMoJ2hvc3QnLCAkb3B0aW9ucykJPyAkb3B0aW9uc1snaG9zdCdd
CQk6ICdsb2NhbGhvc3QnOw0KCQkkdXNlcgkJPSBhcnJheV9rZXlfZXhpc3Rz
KCd1c2VyJywgJG9wdGlvbnMpCT8gJG9wdGlvbnNbJ3VzZXInXQkJOiAnJzsN
CgkJJHBhc3N3b3JkCT0gYXJyYXlfa2V5X2V4aXN0cygncGFzc3dvcmQnLCRv
cHRpb25zKQk/ICRvcHRpb25zWydwYXNzd29yZCddCTogJyc7DQoJCSRkYXRh
YmFzZQk9IGFycmF5X2tleV9leGlzdHMoJ2RhdGFiYXNlJywkb3B0aW9ucykJ
PyAkb3B0aW9uc1snZGF0YWJhc2UnXQk6ICcnOw0KCQkkcHJlZml4CQk9IGFy
cmF5X2tleV9leGlzdHMoJ3ByZWZpeCcsICRvcHRpb25zKQk/ICRvcHRpb25z
WydwcmVmaXgnXQk6ICdqb3NfJzsNCg0KCQkvLyBwZXJmb3JtIGEgbnVtYmVy
IG9mIGZhdGFsaXR5IGNoZWNrcywgdGhlbiByZXR1cm4gZ3JhY2VmdWxseQ0K
CQlpZiAoIWZ1bmN0aW9uX2V4aXN0cyggJ3BnX2Nvbm5lY3QnICkpIHsNCgkJ
CSR0aGlzLT5fZXJyb3JOdW0gPSAxOw0KCQkJJHRoaXMtPl9lcnJvck1zZyA9
ICdUaGUgUG9zdGdyZVNRTCBhZGFwdGVyICJwZyIgaXMgbm90IGF2YWlsYWJs
ZS4nOw0KCQkJcmV0dXJuOw0KCQl9DQoNCgkJLy8gY29ubmVjdCB0byB0aGUg
c2VydmVyDQoJCWlmICghKCR0aGlzLT5fcmVzb3VyY2UgPSBAcGdfY29ubmVj
dCggImhvc3Q9JGhvc3QgdXNlcj0kdXNlciBwYXNzd29yZD0kcGFzc3dvcmQi
ICkpKSB7DQoJCQkkdGhpcy0+X2Vycm9yTnVtID0gMjsNCgkJCSR0aGlzLT5f
ZXJyb3JNc2cgPSAnQ291bGQgbm90IGNvbm5lY3QgdG8gUG9zdGdyZVNRTCc7
DQoJCQlyZXR1cm47DQoJCX0NCg0KCQkvLyBmaW5hbGl6ZSBpbml0aWFsaXph
dGlvbg0KCQlwYXJlbnQ6Ol9fY29uc3RydWN0KCRvcHRpb25zKTsNCgl9DQoN
CgkvKioNCgkgKiBEYXRhYmFzZSBvYmplY3QgZGVzdHJ1Y3Rvcg0KCSAqDQoJ
ICogQHJldHVybiBib29sZWFuDQoJICogQHNpbmNlIDEuNQ0KCSAqLw0KCWZ1
bmN0aW9uIF9fZGVzdHJ1Y3QoKQ0KCXsNCgkJJHJldHVybiA9IGZhbHNlOw0K
CQlpZiAoaXNfcmVzb3VyY2UoJHRoaXMtPl9yZXNvdXJjZSkpIHsNCgkJCSRy
ZXR1cm4gPSBwZ19jbG9zZSgkdGhpcy0+X3Jlc291cmNlKTsNCgkJfQ0KCQly
ZXR1cm4gJHJldHVybjsNCgl9DQoNCgkvKioNCgkgKiBUZXN0IHRvIHNlZSBp
ZiB0aGUgUG9zdGdyZVNRTCBjb25uZWN0b3IgaXMgYXZhaWxhYmxlDQoJICoN
CgkgKiBAc3RhdGljDQoJICogQGFjY2VzcyBwdWJsaWMNCgkgKiBAcmV0dXJu
IGJvb2xlYW4gIFRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlLg0K
CSAqLw0KCWZ1bmN0aW9uIHRlc3QoKQ0KCXsNCgkJcmV0dXJuIChmdW5jdGlv
bl9leGlzdHMoICdwZ19jb25uZWN0JyApKTsNCgl9DQoNCgkvKioNCgkgKiBE
ZXRlcm1pbmVzIGlmIHRoZSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaXMg
YWN0aXZlLg0KCSAqDQoJICogQGFjY2VzcwlwdWJsaWMNCgkgKiBAcmV0dXJu
CWJvb2xlYW4NCgkgKiBAc2luY2UJMS41DQoJICovDQoJZnVuY3Rpb24gY29u
bmVjdGVkKCkNCgl7DQoJCWlmKGlzX3Jlc291cmNlKCR0aGlzLT5fcmVzb3Vy
Y2UpKSB7DQoJCQlyZXR1cm4gcGdfcGluZygkdGhpcy0+X3Jlc291cmNlKTsN
CgkJfQ0KCQlyZXR1cm4gZmFsc2U7DQoJfQ0KDQoJLyoqDQoJICogRGV0ZXJt
aW5lcyBVVEYgc3VwcG9ydA0KCSAqDQoJICogQGFjY2VzcwlwdWJsaWMNCgkg
KiBAcmV0dXJuIGJvb2xlYW4gVHJ1ZSAtIFVURiBpcyBzdXBwb3J0ZWQNCgkg
Ki8NCglmdW5jdGlvbiBoYXNVVEYoKQ0KCXsNCgkJcmV0dXJuIHRydWU7Ly9U
T0RPDQoJCS8vcmV0dXJuIHBnX2NsaWVudF9lbmNvZGluZyggJHRoaXMtPl9y
ZXNvdXJjZSApOw0KCX0NCg0KCS8qKg0KCSAqIEN1c3RvbSBzZXR0aW5ncyBm
b3IgVVRGIHN1cHBvcnQNCgkgKg0KCSAqIEBhY2Nlc3MJcHVibGljDQoJICov
DQoJZnVuY3Rpb24gc2V0VVRGKCkNCgl7DQoJCXBnX3NldF9jbGllbnRfZW5j
b2RpbmcoICR0aGlzLT5fcmVzb3VyY2UsICdVVEY4JyApOw0KCX0NCg0KCS8q
Kg0KCSAqIEdldCBhIGRhdGFiYXNlIGVzY2FwZWQgc3RyaW5nDQoJICoNCgkg
KiBAcGFyYW0Jc3RyaW5nCVRoZSBzdHJpbmcgdG8gYmUgZXNjYXBlZA0KCSAq
IEBwYXJhbQlib29sZWFuCU9wdGlvbmFsIHBhcmFtZXRlciB0byBwcm92aWRl
IGV4dHJhIGVzY2FwaW5nDQoJICogQHJldHVybglzdHJpbmcNCgkgKiBAYWNj
ZXNzCXB1YmxpYw0KCSAqIEBhYnN0cmFjdA0KCSAqLw0KCWZ1bmN0aW9uIGdl
dEVzY2FwZWQoICR0ZXh0LCAkZXh0cmEgPSBmYWxzZSApDQoJew0KCQkkcmVz
dWx0ID0gcGdfZXNjYXBlX3N0cmluZyggJHRoaXMtPl9yZXNvdXJjZSwgJHRl
eHQgKTsNCgkJaWYgKCRleHRyYSkgew0KCQkJJHJlc3VsdCA9IGFkZGNzbGFz
aGVzKCAkcmVzdWx0LCAnJV8nICk7DQoJCX0NCgkJDQoJCXJldHVybiAkcmVz
dWx0Ow0KCX0NCg0KCS8qKg0KCSAqIEdlbmVyYXRlIFNRTCBjb21tYW5kIGZv
ciBnZXR0aW5nIHN0cmluZyBwb3NpdGlvbg0KCSAqDQoJICogQGFjY2VzcyBw
dWJsaWMNCgkgKiBAcGFyYW0gc3RyaW5nIFRoZSBzdHJpbmcgYmVpbmcgc291
Z2h0DQoJICogQHBhcmFtIHN0cmluZyBUaGUgc3RyaW5nL2NvbHVtbiBiZWlu
ZyBzZWFyY2hlZA0KCSAqIEByZXR1cm4gc3RyaW5nIFRoZSByZXN1bHRpbmcg
U1FMDQoJICovDQoJZnVuY3Rpb24gc3RyaW5nUG9zaXRpb25TUUwoJHN1YnN0
cmluZywgJHN0cmluZykNCgl7DQoJCSRzcWwgPSAiUE9TSVRJT04oJHN1YnN0
cmluZywgJHN0cmluZykiOw0KDQoJCXJldHVybiAkc3FsOw0KCX0NCg0KCS8q
Kg0KCSAqIEdlbmVyYXRlIFNRTCBjb21tYW5kIGZvciByZXR1cm5pbmcgcmFu
ZG9tIHZhbHVlDQoJICoNCgkgKiBAYWNjZXNzIHB1YmxpYw0KCSAqIEByZXR1
cm4gc3RyaW5nIFRoZSByZXN1bHRpbmcgU1FMDQoJICovDQoJZnVuY3Rpb24g
c3RyaW5nUmFuZG9tU1FMKCkNCgl7DQoJCXJldHVybiAiUkFORE9NKCkiOw0K
CX0NCg0KCS8qKg0KCSAqIENyZWF0ZSBkYXRhYmFzZQ0KCSAqDQoJICogQGFj
Y2VzcyBwdWJsaWMNCgkgKiBAcGFyYW0gc3RyaW5nIFRoZSBkYXRhYmFzZSBu
YW1lDQoJICogQHBhcmFtIGJvb2wgV2hldGhlciBvciBub3QgdG8gY3JlYXRl
IHdpdGggVVRGIHN1cHBvcnQNCgkgKiBAcmV0dXJuIHN0cmluZyBEYXRhYmFz
ZSBjcmVhdGlvbiBzdHJpbmcNCgkgKi8NCglmdW5jdGlvbiBjcmVhdGVEYXRh
YmFzZSgkREJuYW1lLCAkREJ1dGZTdXBwb3J0KQ0KCXsNCgkJaWYgKCREQnV0
ZlN1cHBvcnQpDQoJCXsNCgkJCSRzcWwgPSAiQ1JFQVRFIERBVEFCQVNFICIu
JHRoaXMtPm5hbWVRdW90ZSgkREJuYW1lKS4iIEVOQ09ESU5HICckREJuYW1l
JykiOw0KCQl9DQoJCWVsc2UNCgkJew0KCQkJJHNxbCA9ICJDUkVBVEUgREFU
QUJBU0UgIi4kdGhpcy0+bmFtZVF1b3RlKCREQm5hbWUpOw0KCQl9DQoNCgkJ
JHRoaXMtPnNldFF1ZXJ5KCRzcWwpOw0KCQkkdGhpcy0+cXVlcnkoKTsNCgkJ
JHJlc3VsdCA9ICR0aGlzLT5nZXRFcnJvck51bSgpOw0KDQoJCWlmICgkcmVz
dWx0ICE9IDApDQoJCXsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCXJl
dHVybiB0cnVlOw0KCX0NCg0KCS8qKg0KCSAqIFJlbmFtZSBhIGRhdGFiYXNl
IHRhYmxlDQoJICoNCgkgKiBAcGFyYW0gc3RyaW5nIFRoZSBvbGQgdGFibGUg
bmFtZQ0KCSAqIEBwYXJhbSBzdHJpbmcgVGhlIG5ldyB0YWJsZSBuYW1lDQoJ
ICovDQoJZnVuY3Rpb24gcmVuYW1lVGFibGUoJG9sZFRhYmxlLCAkbmV3VGFi
bGUpDQoJew0KCQkkcXVlcnkgPSAiQUxURVIgVEFCTEUgIi4kb2xkVGFibGUu
IiBUTyAiLiRuZXdUYWJsZTsNCgkJJGRiLT5zZXRRdWVyeSgkcXVlcnkpOw0K
CQkkZGItPnF1ZXJ5KCk7DQoNCgkJJHJlc3VsdCA9ICRkYi0+Z2V0RXJyb3JO
dW0oKTsNCg0KCQlpZiAoJHJlc3VsdCAhPSAwKQ0KCQl7DQoJCQlyZXR1cm4g
ZmFsc2U7DQoJCX0NCg0KCQlyZXR1cm4gdHJ1ZTsNCgl9DQoNCgkvKioNCgkg
KiBFeGVjdXRlIHRoZSBxdWVyeQ0KCSAqDQoJICogQGFjY2VzcwlwdWJsaWMN
CgkgKiBAcmV0dXJuIG1peGVkIEEgZGF0YWJhc2UgcmVzb3VyY2UgaWYgc3Vj
Y2Vzc2Z1bCwgRkFMU0UgaWYgbm90Lg0KCSAqLw0KCWZ1bmN0aW9uIHF1ZXJ5
KCkNCgl7DQoJCWlmICghaXNfcmVzb3VyY2UoJHRoaXMtPl9yZXNvdXJjZSkp
IHsNCgkJCXJldHVybiBmYWxzZTsNCgkJfQ0KDQoJCS8vIFRha2UgYSBsb2Nh
bCBjb3B5IHNvIHRoYXQgd2UgZG9uJ3QgbW9kaWZ5IHRoZSBvcmlnaW5hbCBx
dWVyeSBhbmQgY2F1c2UgaXNzdWVzIGxhdGVyDQoJCSRzcWwgPSAkdGhpcy0+
X3NxbDsNCgkJaWYgKCR0aGlzLT5fbGltaXQgPiAwIHx8ICR0aGlzLT5fb2Zm
c2V0ID4gMCkgew0KCQkJJHNxbCAuPSAnIExJTUlUICcuJHRoaXMtPl9saW1p
dC4nIE9GRlNFVCAnLiR0aGlzLT5fb2Zmc2V0Ow0KCQl9DQoJCWlmICgkdGhp
cy0+X2RlYnVnKSB7DQoJCQkkdGhpcy0+X3RpY2tlcisrOw0KCQkJJHRoaXMt
Pl9sb2dbXSA9ICRzcWw7DQoJCX0NCgkJJHRoaXMtPl9lcnJvck51bSA9IDA7
DQoJCSR0aGlzLT5fZXJyb3JNc2cgPSAnJzsNCg0KCQkkdGhpcy0+X2N1cnNv
ciA9IHBnX3F1ZXJ5KCAkdGhpcy0+X3Jlc291cmNlLCAkc3FsICk7DQoNCgkJ
aWYgKCEkdGhpcy0+X2N1cnNvcikNCgkJew0KCQkJJHRoaXMtPl9lcnJvck51
bSA9IHBnX3Jlc3VsdF9lcnJvcl9maWVsZCggJHRoaXMtPl9jdXJzb3IsIFBH
U1FMX0RJQUdfU1FMU1RBVEUgKSAuICcgJzsNCgkJCSR0aGlzLT5fZXJyb3JN
c2cgPSBwZ19yZXN1bHRfZXJyb3JfZmllbGQoICR0aGlzLT5fY3Vyc29yLCBQ
R1NRTF9ESUFHX01FU1NBR0VfUFJJTUFSWSApLiIgU1FMPSRzcWwgPGJyIC8+
IjsNCgkJCWlmICgkdGhpcy0+X2RlYnVnKSB7DQoJCQkJSkVycm9yOjpyYWlz
ZUVycm9yKDUwMCwgJ0pEYXRhYmFzZVBvc3RncmVTUUw6OnF1ZXJ5OiAnLiR0
aGlzLT5fZXJyb3JOdW0uJyAtICcuJHRoaXMtPl9lcnJvck1zZyApOw0KCQkJ
fQ0KCQkJcmV0dXJuIGZhbHNlOw0KCQl9DQoJCXJldHVybiAkdGhpcy0+X2N1
cnNvcjsNCgl9DQoNCgkvKioNCgkgKiBEZXNjcmlwdGlvbg0KCSAqDQoJICog
QGFjY2VzcwlwdWJsaWMNCgkgKiBAcmV0dXJuIGludCBUaGUgbnVtYmVyIG9m
IGFmZmVjdGVkIHJvd3MgaW4gdGhlIHByZXZpb3VzIG9wZXJhdGlvbg0KCSAq
IEBzaW5jZSAxLjAuNQ0KCSAqLw0KCWZ1bmN0aW9uIGdldEFmZmVjdGVkUm93
cygpDQoJew0KCQlyZXR1cm4gcGdfYWZmZWN0ZWRfcm93cyggJHRoaXMtPl9y
ZXNvdXJjZSApOw0KCX0NCg0KCS8qKg0KCSAqIEV4ZWN1dGUgYSBiYXRjaCBx
dWVyeQ0KCSAqDQoJICogQGFjY2VzcwlwdWJsaWMNCgkgKiBAcmV0dXJuIG1p
eGVkIEEgZGF0YWJhc2UgcmVzb3VyY2UgaWYgc3VjY2Vzc2Z1bCwgRkFMU0Ug
aWYgbm90Lg0KCSAqLw0KCWZ1bmN0aW9uIHF1ZXJ5QmF0Y2goICRhYm9ydF9v
bl9lcnJvcj10cnVlLCAkcF90cmFuc2FjdGlvbl9zYWZlID0gZmFsc2UpDQoJ
ew0KCQkkdGhpcy0+X2Vycm9yTnVtID0gMDsNCgkJJHRoaXMtPl9lcnJvck1z
ZyA9ICcnOw0KCQlpZiAoJHBfdHJhbnNhY3Rpb25fc2FmZSkgew0KCQkJJHRo
aXMtPl9zcWwgPSBydHJpbSgkdGhpcy0+X3NxbCwgIjsgXHRcclxuXDAiKTsN
CgkJCSRzaSA9ICR0aGlzLT5nZXRWZXJzaW9uKCk7DQoJCQlwcmVnX21hdGNo
X2FsbCggIi8oXGQrKVwuKFxkKylcLihcZCspL2kiLCAkc2ksICRtICk7DQoJ
CQlpZiAoJG1bMV0gPj0gNCkgew0KCQkJCSR0aGlzLT5fc3FsID0gJ1NUQVJU
IFRSQU5TQUNUSU9OOycgLiAkdGhpcy0+X3NxbCAuICc7IENPTU1JVDsnOw0K
CQkJfSBlbHNlIGlmICgkbVsyXSA+PSAyMyAmJiAkbVszXSA+PSAxOSkgew0K
CQkJCSR0aGlzLT5fc3FsID0gJ0JFR0lOIFdPUks7JyAuICR0aGlzLT5fc3Fs
IC4gJzsgQ09NTUlUOyc7DQoJCQl9IGVsc2UgaWYgKCRtWzJdID49IDIzICYm
ICRtWzNdID49IDE3KSB7DQoJCQkJJHRoaXMtPl9zcWwgPSAnQkVHSU47JyAu
ICR0aGlzLT5fc3FsIC4gJzsgQ09NTUlUOyc7DQoJCQl9DQoJCX0NCgkJJHF1
ZXJ5X3NwbGl0ID0gJHRoaXMtPnNwbGl0U3FsKCR0aGlzLT5fc3FsKTsNCgkJ
JGVycm9yID0gMDsNCgkJZm9yZWFjaCAoJHF1ZXJ5X3NwbGl0IGFzICRjb21t
YW5kX2xpbmUpIHsNCgkJCSRjb21tYW5kX2xpbmUgPSB0cmltKCAkY29tbWFu
ZF9saW5lICk7DQoJCQlpZiAoJGNvbW1hbmRfbGluZSAhPSAnJykgew0KCQkJ
CSR0aGlzLT5fY3Vyc29yID0gcGdfcXVlcnkoICR0aGlzLT5fcmVzb3VyY2Us
ICRjb21tYW5kX2xpbmUgKTsNCgkJCQlpZiAoJHRoaXMtPl9kZWJ1Zykgew0K
CQkJCQkkdGhpcy0+X3RpY2tlcisrOw0KCQkJCQkkdGhpcy0+X2xvZ1tdID0g
JGNvbW1hbmRfbGluZTsNCgkJCQl9DQoJCQkJaWYgKCEkdGhpcy0+X2N1cnNv
cikgew0KCQkJCQkkZXJyb3IgPSAxOw0KCQkJCQkkdGhpcy0+X2Vycm9yTnVt
IC49IHBnX3Jlc3VsdF9lcnJvcl9maWVsZCggJHRoaXMtPl9jdXJzb3IsIFBH
U1FMX0RJQUdfU1FMU1RBVEUgKSAuICcgJzsNCgkJCQkJJHRoaXMtPl9lcnJv
ck1zZyAuPSBwZ19yZXN1bHRfZXJyb3JfZmllbGQoICR0aGlzLT5fY3Vyc29y
LCBQR1NRTF9ESUFHX01FU1NBR0VfUFJJTUFSWSApLiIgU1FMPSRjb21tYW5k
X2xpbmUgPGJyIC8+IjsNCgkJCQkJaWYgKCRhYm9ydF9vbl9lcnJvcikgew0K
CQkJCQkJcmV0dXJuICR0aGlzLT5fY3Vyc29yOw0KCQkJCQl9DQoJCQkJfQ0K
CQkJfQ0KCQl9DQoJCXJldHVybiAkZXJyb3IgPyBmYWxzZSA6IHRydWU7DQoJ
fQ0KDQoJLyoqDQoJICogRGlhZ25vc3RpYyBmdW5jdGlvbg0KCSAqDQoJICog
QGFjY2VzcwlwdWJsaWMNCgkgKiBAcmV0dXJuCXN0cmluZw0KCSAqLw0KCWZ1
bmN0aW9uIGV4cGxhaW4oKQ0KCXsNCgkJJHRlbXAgPSAkdGhpcy0+X3NxbDsN
CgkJJHRoaXMtPl9zcWwgPSAiRVhQTEFJTiAkdGhpcy0+X3NxbCI7DQoNCgkJ
aWYgKCEoJGN1ciA9ICR0aGlzLT5xdWVyeSgpKSkgew0KCQkJcmV0dXJuIG51
bGw7DQoJCX0NCgkJJGZpcnN0ID0gdHJ1ZTsNCg0KCQkkYnVmZmVyID0gJzx0
YWJsZSBpZD0iZXhwbGFpbi1zcWwiPic7DQoJCSRidWZmZXIgLj0gJzx0aGVh
ZD48dHI+PHRkIGNvbHNwYW49Ijk5Ij4nLiR0aGlzLT5nZXRRdWVyeSgpLic8
L3RkPjwvdHI+JzsNCgkJd2hpbGUgKCRyb3cgPSBwZ19mZXRjaF9hc3NvYygg
JGN1ciApKSB7DQoJCQlpZiAoJGZpcnN0KSB7DQoJCQkJJGJ1ZmZlciAuPSAn
PHRyPic7DQoJCQkJZm9yZWFjaCAoJHJvdyBhcyAkaz0+JHYpIHsNCgkJCQkJ
JGJ1ZmZlciAuPSAnPHRoPicuJGsuJzwvdGg+JzsNCgkJCQl9DQoJCQkJJGJ1
ZmZlciAuPSAnPC90cj4nOw0KCQkJCSRmaXJzdCA9IGZhbHNlOw0KCQkJfQ0K
CQkJJGJ1ZmZlciAuPSAnPC90aGVhZD48dGJvZHk+PHRyPic7DQoJCQlmb3Jl
YWNoICgkcm93IGFzICRrPT4kdikgew0KCQkJCSRidWZmZXIgLj0gJzx0ZD4n
LiR2Lic8L3RkPic7DQoJCQl9DQoJCQkkYnVmZmVyIC49ICc8L3RyPic7DQoJ
CX0NCgkJJGJ1ZmZlciAuPSAnPC90Ym9keT48L3RhYmxlPic7DQoJCXBnX2Zy
ZWVfcmVzdWx0KCAkY3VyICk7DQoNCgkJJHRoaXMtPl9zcWwgPSAkdGVtcDsN
Cg0KCQlyZXR1cm4gJGJ1ZmZlcjsNCgl9DQoNCgkvKioNCgkgKiBEZXNjcmlw
dGlvbg0KCSAqDQoJICogQGFjY2VzcwlwdWJsaWMNCgkgKiBAcmV0dXJuIGlu
dCBUaGUgbnVtYmVyIG9mIHJvd3MgcmV0dXJuZWQgZnJvbSB0aGUgbW9zdCBy
ZWNlbnQgcXVlcnkuDQoJICovDQoJZnVuY3Rpb24gZ2V0TnVtUm93cyggJGN1
cj1udWxsICkNCgl7DQoJCXJldHVybiBwZ19udW1fcm93cyggJGN1ciA/ICRj
dXIgOiAkdGhpcy0+X2N1cnNvciApOw0KCX0NCg0KCS8qKg0KCSAqIFRoaXMg
bWV0aG9kIGxvYWRzIHRoZSBmaXJzdCBmaWVsZCBvZiB0aGUgZmlyc3Qgcm93
IHJldHVybmVkIGJ5IHRoZSBxdWVyeS4NCgkgKg0KCSAqIEBhY2Nlc3MJcHVi
bGljDQoJICogQHJldHVybiBUaGUgdmFsdWUgcmV0dXJuZWQgaW4gdGhlIHF1
ZXJ5IG9yIG51bGwgaWYgdGhlIHF1ZXJ5IGZhaWxlZC4NCgkgKi8NCglmdW5j
dGlvbiBsb2FkUmVzdWx0KCkNCgl7DQoJCWlmICghKCRjdXIgPSAkdGhpcy0+
cXVlcnkoKSkpIHsNCgkJCXJldHVybiBudWxsOw0KCQl9DQoJCSRyZXQgPSBu
dWxsOw0KCQlpZiAoJHJvdyA9IHBnX2ZldGNoX3JvdyggJGN1ciApKSB7DQoJ
CQkkcmV0ID0gJHJvd1swXTsNCgkJfQ0KCQlwZ19mcmVlX3Jlc3VsdCggJGN1
ciApOw0KCQlyZXR1cm4gJHJldDsNCgl9DQoNCgkvKioNCgkgKiBMb2FkIGFu
IGFycmF5IG9mIHNpbmdsZSBmaWVsZCByZXN1bHRzIGludG8gYW4gYXJyYXkN
CgkgKg0KCSAqIEBhY2Nlc3MJcHVibGljDQoJICovDQoJZnVuY3Rpb24gbG9h
ZFJlc3VsdEFycmF5KCRudW1pbmFycmF5ID0gMCkNCgl7DQoJCWlmICghKCRj
dXIgPSAkdGhpcy0+cXVlcnkoKSkpIHsNCgkJCXJldHVybiBudWxsOw0KCQl9
DQoJCSRhcnJheSA9IGFycmF5KCk7DQoJCXdoaWxlICgkcm93ID0gcGdfZmV0
Y2hfcm93KCAkY3VyICkpIHsNCgkJCSRhcnJheVtdID0gJHJvd1skbnVtaW5h
cnJheV07DQoJCX0NCgkJcGdfZnJlZV9yZXN1bHQoICRjdXIgKTsNCgkJcmV0
dXJuICRhcnJheTsNCgl9DQoNCgkvKioNCgkqIEZldGNoIGEgcmVzdWx0IHJv
dyBhcyBhbiBhc3NvY2lhdGl2ZSBhcnJheQ0KCSoNCgkqIEBhY2Nlc3MJcHVi
bGljDQoJKiBAcmV0dXJuIGFycmF5DQoJKi8NCglmdW5jdGlvbiBsb2FkQXNz
b2MoKQ0KCXsNCgkJaWYgKCEoJGN1ciA9ICR0aGlzLT5xdWVyeSgpKSkgew0K
CQkJcmV0dXJuIG51bGw7DQoJCX0NCgkJJHJldCA9IG51bGw7DQoJCWlmICgk
YXJyYXkgPSBwZ19mZXRjaF9hc3NvYyggJGN1ciApKSB7DQoJCQkkcmV0ID0g
JGFycmF5Ow0KCQl9DQoJCXBnX2ZyZWVfcmVzdWx0KCAkY3VyICk7DQoJCXJl
dHVybiAkcmV0Ow0KCX0NCg0KCS8qKg0KCSogTG9hZCBhIGFzc29jIGxpc3Qg
b2YgZGF0YWJhc2Ugcm93cw0KCSoNCgkqIEBhY2Nlc3MJcHVibGljDQoJKiBA
cGFyYW0gc3RyaW5nIFRoZSBmaWVsZCBuYW1lIG9mIGEgcHJpbWFyeSBrZXkN
CgkqIEByZXR1cm4gYXJyYXkgSWYgPHZhcj5rZXk8L3Zhcj4gaXMgZW1wdHkg
YXMgc2VxdWVudGlhbCBsaXN0IG9mIHJldHVybmVkIHJlY29yZHMuDQoJKi8N
CglmdW5jdGlvbiBsb2FkQXNzb2NMaXN0KCAka2V5PScnICkNCgl7DQoJCWlm
ICghKCRjdXIgPSAkdGhpcy0+cXVlcnkoKSkpIHsNCgkJCXJldHVybiBudWxs
Ow0KCQl9DQoJCSRhcnJheSA9IGFycmF5KCk7DQoJCXdoaWxlICgkcm93ID0g
cGdfZmV0Y2hfYXNzb2MoICRjdXIgKSkgew0KCQkJaWYgKCRrZXkpIHsNCgkJ
CQkkYXJyYXlbJHJvd1ska2V5XV0gPSAkcm93Ow0KCQkJfSBlbHNlIHsNCgkJ
CQkkYXJyYXlbXSA9ICRyb3c7DQoJCQl9DQoJCX0NCgkJcGdfZnJlZV9yZXN1
bHQoICRjdXIgKTsNCgkJcmV0dXJuICRhcnJheTsNCgl9DQoNCgkvKioNCgkq
IFRoaXMgZ2xvYmFsIGZ1bmN0aW9uIGxvYWRzIHRoZSBmaXJzdCByb3cgb2Yg
YSBxdWVyeSBpbnRvIGFuIG9iamVjdA0KCSoNCgkqIEBhY2Nlc3MJcHVibGlj
DQoJKiBAcmV0dXJuIAlvYmplY3QNCgkqLw0KCWZ1bmN0aW9uIGxvYWRPYmpl
Y3QoICkNCgl7DQoJCWlmICghKCRjdXIgPSAkdGhpcy0+cXVlcnkoKSkpIHsN
CgkJCXJldHVybiBudWxsOw0KCQl9DQoJCSRyZXQgPSBudWxsOw0KCQlpZiAo
JG9iamVjdCA9IHBnX2ZldGNoX29iamVjdCggJGN1ciApKSB7DQoJCQkkcmV0
ID0gJG9iamVjdDsNCgkJfQ0KCQlwZ19mcmVlX3Jlc3VsdCggJGN1ciApOw0K
CQlyZXR1cm4gJHJldDsNCgl9DQoNCgkvKioNCgkqIExvYWQgYSBsaXN0IG9m
IGRhdGFiYXNlIG9iamVjdHMNCgkqDQoJKiBJZiA8dmFyPmtleTwvdmFyPiBp
cyBub3QgZW1wdHkgdGhlbiB0aGUgcmV0dXJuZWQgYXJyYXkgaXMgaW5kZXhl
ZCBieSB0aGUgdmFsdWUNCgkqIHRoZSBkYXRhYmFzZSBrZXkuICBSZXR1cm5z
IDx2YXI+bnVsbDwvdmFyPiBpZiB0aGUgcXVlcnkgZmFpbHMuDQoJKg0KCSog
QGFjY2VzcwlwdWJsaWMNCgkqIEBwYXJhbSBzdHJpbmcgVGhlIGZpZWxkIG5h
bWUgb2YgYSBwcmltYXJ5IGtleQ0KCSogQHJldHVybiBhcnJheSBJZiA8dmFy
PmtleTwvdmFyPiBpcyBlbXB0eSBhcyBzZXF1ZW50aWFsIGxpc3Qgb2YgcmV0
dXJuZWQgcmVjb3Jkcy4NCgkqLw0KCWZ1bmN0aW9uIGxvYWRPYmplY3RMaXN0
KCAka2V5PScnICkNCgl7DQoJCWlmICghKCRjdXIgPSAkdGhpcy0+cXVlcnko
KSkpIHsNCgkJCXJldHVybiBudWxsOw0KCQl9DQoJCSRhcnJheSA9IGFycmF5
KCk7DQoJCXdoaWxlICgkcm93ID0gcGdfZmV0Y2hfb2JqZWN0KCAkY3VyICkp
IHsNCgkJCWlmICgka2V5KSB7DQoJCQkJJGFycmF5WyRyb3ctPiRrZXldID0g
JHJvdzsNCgkJCX0gZWxzZSB7DQoJCQkJJGFycmF5W10gPSAkcm93Ow0KCQkJ
fQ0KCQl9DQoJCXBnX2ZyZWVfcmVzdWx0KCAkY3VyICk7DQoJCXJldHVybiAk
YXJyYXk7DQoJfQ0KDQoJLyoqDQoJICogRGVzY3JpcHRpb24NCgkgKg0KCSAq
IEBhY2Nlc3MJcHVibGljDQoJICogQHJldHVybiBUaGUgZmlyc3Qgcm93IG9m
IHRoZSBxdWVyeS4NCgkgKi8NCglmdW5jdGlvbiBsb2FkUm93KCkNCgl7DQoJ
CWlmICghKCRjdXIgPSAkdGhpcy0+cXVlcnkoKSkpIHsNCgkJCXJldHVybiBu
dWxsOw0KCQl9DQoJCSRyZXQgPSBudWxsOw0KCQlpZiAoJHJvdyA9IHBnX2Zl
dGNoX3JvdyggJGN1ciApKSB7DQoJCQkkcmV0ID0gJHJvdzsNCgkJfQ0KCQlw
Z19mcmVlX3Jlc3VsdCggJGN1ciApOw0KCQlyZXR1cm4gJHJldDsNCgl9DQoN
CgkvKioNCgkqIExvYWQgYSBsaXN0IG9mIGRhdGFiYXNlIHJvd3MgKG51bWVy
aWMgY29sdW1uIGluZGV4aW5nKQ0KCSoNCgkqIEBhY2Nlc3MgcHVibGljDQoJ
KiBAcGFyYW0gc3RyaW5nIFRoZSBmaWVsZCBuYW1lIG9mIGEgcHJpbWFyeSBr
ZXkNCgkqIEByZXR1cm4gYXJyYXkgSWYgPHZhcj5rZXk8L3Zhcj4gaXMgZW1w
dHkgYXMgc2VxdWVudGlhbCBsaXN0IG9mIHJldHVybmVkIHJlY29yZHMuDQoJ
KiBJZiA8dmFyPmtleTwvdmFyPiBpcyBub3QgZW1wdHkgdGhlbiB0aGUgcmV0
dXJuZWQgYXJyYXkgaXMgaW5kZXhlZCBieSB0aGUgdmFsdWUNCgkqIHRoZSBk
YXRhYmFzZSBrZXkuICBSZXR1cm5zIDx2YXI+bnVsbDwvdmFyPiBpZiB0aGUg
cXVlcnkgZmFpbHMuDQoJKi8NCglmdW5jdGlvbiBsb2FkUm93TGlzdCggJGtl
eT1udWxsICkNCgl7DQoJCWlmICghKCRjdXIgPSAkdGhpcy0+cXVlcnkoKSkp
IHsNCgkJCXJldHVybiBudWxsOw0KCQl9DQoJCSRhcnJheSA9IGFycmF5KCk7
DQoJCXdoaWxlICgkcm93ID0gcGdfZmV0Y2hfcm93KCAkY3VyICkpIHsNCgkJ
CWlmICgka2V5ICE9PSBudWxsKSB7DQoJCQkJJGFycmF5WyRyb3dbJGtleV1d
ID0gJHJvdzsNCgkJCX0gZWxzZSB7DQoJCQkJJGFycmF5W10gPSAkcm93Ow0K
CQkJfQ0KCQl9DQoJCXBnX2ZyZWVfcmVzdWx0KCAkY3VyICk7DQoJCXJldHVy
biAkYXJyYXk7DQoJfQ0KDQoJLyoqDQoJICogSW5zZXJ0cyBhIHJvdyBpbnRv
IGEgdGFibGUgYmFzZWQgb24gYW4gb2JqZWN0cyBwcm9wZXJ0aWVzDQoJICoN
CgkgKiBAYWNjZXNzCXB1YmxpYw0KCSAqIEBwYXJhbQlzdHJpbmcJVGhlIG5h
bWUgb2YgdGhlIHRhYmxlDQoJICogQHBhcmFtCW9iamVjdAlBbiBvYmplY3Qg
d2hvc2UgcHJvcGVydGllcyBtYXRjaCB0YWJsZSBmaWVsZHMNCgkgKiBAcGFy
YW0Jc3RyaW5nCVRoZSBuYW1lIG9mIHRoZSBwcmltYXJ5IGtleS4gSWYgcHJv
dmlkZWQgdGhlIG9iamVjdCBwcm9wZXJ0eSBpcyB1cGRhdGVkLg0KCSAqLw0K
CWZ1bmN0aW9uIGluc2VydE9iamVjdCggJHRhYmxlLCAmJG9iamVjdCwgJGtl
eU5hbWUgPSBOVUxMICkNCiAgICAgICAgew0KICAgICAgICAgICAgICAgICRm
bXRzcWwgPSAnSU5TRVJUIElOVE8gJy4kdGFibGUuJyAoICVzICkgVkFMVUVT
ICggJXMgKSAnOw0KCQkkdmVyUGFydHMgPSBleHBsb2RlKCAnLicsICR0aGlz
LT5nZXRWZXJzaW9uKCkgKTsNCg0KICAgICAgICAgICAgICAgICRmaWVsZHMg
PSBhcnJheSgpOw0KICAgICAgICAgICAgICAgIGZvcmVhY2ggKGdldF9vYmpl
Y3RfdmFycyggJG9iamVjdCApIGFzICRrID0+ICR2KSB7DQogICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNfYXJyYXkoJHYpIG9yIGlzX29iamVjdCgk
dikgb3IgJHYgPT09IE5VTEwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7DQogICAgICAgICAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGtbMF0gPT0gJ18nKSB7
IC8vIGludGVybmFsIGZpZWxkDQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0K
DQogICAgICAgICAgICAgICAgICAgICAgICAkZmllbGRzW10gPSAkdGhpcy0+
bmFtZVF1b3RlKCAkayApOw0KICAgICAgICAgICAgICAgICAgICAgICAgJHZh
bHVlc1tdID0gJHRoaXMtPmlzUXVvdGVkKCAkayApID8gJHRoaXMtPlF1b3Rl
KCAkdiApIDogKGludCkgJHY7DQogICAgICAgICAgICAgICAgfQ0KDQoJCWlm
ICggIWluX2FycmF5KCR0aGlzLT5uYW1lUXVvdGUoJGtleU5hbWUpLCAkZmll
bGRzKSApDQoJCXsNCgkJCWlmICggJHZlclBhcnRzWzBdID4gOCB8fCAoJHZl
clBhcnRzWzBdID09IDggJiYgJHZlclBhcnRzWzFdID49IDIpICkNCiAgICAg
ICAgICAgICAgICAJew0KICAgICAgICAgICAgICAgIAkgICAgICAgICRmbXRz
cWwgLj0gIlJFVFVSTklORyAka2V5TmFtZSBBUyAiLiR0aGlzLT5uYW1lUXVv
dGUoJ2lkJykuIjsiOw0KICAgICAgICAgICAgICAgIAl9DQogICAgICAgICAg
ICAgICAgCWVsc2UNCgkJCXsNCiAgICAgICAgICAgICAgICAgICAgICAgIAkk
Zm10c3FsIC49ICI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IAlTRUxFQ1QgJGtleU5hbWUgQVMgJ2lkJyBGUk9NICR0YWJsZSc7ICI7DQog
ICAgICAgICAgICAgICAgCX0NCgkJfQ0KICAgICAgICAgICAgICAgICR0aGlz
LT5zZXRRdWVyeSggc3ByaW50ZiggJGZtdHNxbCwgaW1wbG9kZSggIiwiLCAk
ZmllbGRzICkgLCAgaW1wbG9kZSggIiwiLCAkdmFsdWVzICkgKSApOw0KDQog
ICAgICAgICAgICAgICRyZXN1bHQgPSAkdGhpcy0+cXVlcnkoKTsNCgkJCQkN
CiAgICAgICAgICAgICAgICBpZiAoISRyZXN1bHQpDQogICAgICAgICAgICAg
ICAgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0K
ICAgICAgICAgICAgICAgIH0NCg0KCQlpZiAoICRyZXN1bHRzWzBdWzBdWydp
ZCddICkgew0KCQkJJHRoaXMtPl9pbnNlcnRfaWQgPSAkcmVzdWx0c1swXVsw
XVsnaWQnXTsNCgkJfQ0KDQogICAgICAgICAgICAgICAgaWYgKCRrZXlOYW1l
ICYmICRpZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgJG9iamVjdC0+
JGtleU5hbWUgPSAkdGhpcy0+X2luc2VydF9pZDsNCiAgICAgICAgICAgICAg
ICB9DQogICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIH0N
Cg0KCS8qKg0KCSAqIERlc2NyaXB0aW9uDQoJICoNCgkgKiBAYWNjZXNzIHB1
YmxpYw0KCSAqIEBwYXJhbSBbdHlwZV0gJHVwZGF0ZU51bGxzDQoJICovDQoJ
ZnVuY3Rpb24gdXBkYXRlT2JqZWN0KCAkdGFibGUsICYkb2JqZWN0LCAka2V5
TmFtZSwgJHVwZGF0ZU51bGxzPXRydWUgKQ0KCXsNCgkJJGZtdHNxbCA9ICdV
UERBVEUgJy4kdGFibGUuJyBTRVQgJXMgV0hFUkUgJXMnOw0KCQkkdG1wID0g
YXJyYXkoKTsNCgkJZm9yZWFjaCAoZ2V0X29iamVjdF92YXJzKCAkb2JqZWN0
ICkgYXMgJGsgPT4gJHYpDQoJCXsNCgkJCWlmKCBpc19hcnJheSgkdikgb3Ig
aXNfb2JqZWN0KCR2KSBvciAka1swXSA9PSAnXycgKSB7IC8vIGludGVybmFs
IG9yIE5BIGZpZWxkDQoJCQkJY29udGludWU7DQoJCQl9DQoJCQlpZiggJGsg
PT0gJGtleU5hbWUgKSB7IC8vIFBLIG5vdCB0byBiZSB1cGRhdGVkDQoJCQkJ
JHdoZXJlID0gJGtleU5hbWUgLiAnPScgLiAkdGhpcy0+UXVvdGUoICR2ICk7
DQoJCQkJY29udGludWU7DQoJCQl9DQoJCQlpZiAoJHYgPT09IG51bGwpDQoJ
CQl7DQoJCQkJaWYgKCR1cGRhdGVOdWxscykgew0KCQkJCQkkdmFsID0gJ05V
TEwnOw0KCQkJCX0gZWxzZSB7DQoJCQkJCWNvbnRpbnVlOw0KCQkJCX0NCgkJ
CX0gZWxzZSB7DQoJCQkJJHZhbCA9ICR0aGlzLT5pc1F1b3RlZCggJGsgKSA/
ICR0aGlzLT5RdW90ZSggJHYgKSA6IChpbnQpICR2Ow0KCQkJfQ0KCQkJJHRt
cFtdID0gJHRoaXMtPm5hbWVRdW90ZSggJGsgKSAuICc9JyAuICR2YWw7DQoJ
CX0NCgkJJHRoaXMtPnNldFF1ZXJ5KCBzcHJpbnRmKCAkZm10c3FsLCBpbXBs
b2RlKCAiLCIsICR0bXAgKSAsICR3aGVyZSApICk7DQoJCXJldHVybiAkdGhp
cy0+cXVlcnkoKTsNCgl9DQoNCgkvKioNCgkgKiBEZXNjcmlwdGlvbg0KCSAq
DQoJICogQGFjY2VzcyBwdWJsaWMNCgkgKi8NCglmdW5jdGlvbiBpbnNlcnRp
ZCgpDQoJew0KCQlyZXR1cm4gJHRoaXMtPl9pbnNlcnRfaWQ7DQoJfQ0KDQoJ
IC8qKg0KCSAqIERlc2NyaXB0aW9uDQoJICoNCgkgKiBAYWNjZXNzIHB1Ymxp
Yw0KCSAqLw0KCWZ1bmN0aW9uIGdldFZlcnNpb24oKQ0KCXsNCgkJJHZlcnNp
b24gPSBwZ192ZXJzaW9uKCAkdGhpcy0+X3Jlc291cmNlICk7DQoJCXJldHVy
biAkdmVyc2lvblsnc2VydmVyJ107DQoJfQ0KCQ0KCS8qKg0KCSAqIEFzc3Vt
ZXMgZGF0YWJhc2UgY29sbGF0aW9uIGluIHVzZSBieSBzYW1wbGluZyBvbmUg
dGV4dCBmaWVsZCBpbiBvbmUgdGFibGUNCgkgKg0KCSAqIEBhY2Nlc3MJcHVi
bGljDQoJICogQHJldHVybiBzdHJpbmcgQ29sbGF0aW9uIGluIHVzZQ0KCSAq
Lw0KCWZ1bmN0aW9uIGdldENvbGxhdGlvbiAoKQ0KCXsNCgkJaWYgKCAkdGhp
cy0+aGFzVVRGKCkgKSB7DQoJCQkkY3VyID0gJHRoaXMtPnF1ZXJ5KCAnU0hP
VyBMQ19DT0xMQVRFOycgKTsNCgkJCSRjb2xsID0gcGdfZmV0Y2hfcm93KCAk
Y3VyLCAwICk7DQoJCQlyZXR1cm4gJGNvbGxbJ2xjX2N0eXBlJ107DQoJCX0g
ZWxzZSB7DQoJCQlyZXR1cm4gIk4vQSI7DQoJCX0NCgl9DQoNCgkvKioNCgkg
KiBEZXNjcmlwdGlvbg0KCSAqDQoJICogQGFjY2VzcwlwdWJsaWMNCgkgKiBA
cmV0dXJuIGFycmF5IEEgbGlzdCBvZiBhbGwgdGhlIHRhYmxlcyBpbiB0aGUg
ZGF0YWJhc2UNCgkgKi8NCglmdW5jdGlvbiBnZXRUYWJsZUxpc3QoKW0NCgl7
DQoJCSR0aGlzLT5zZXRRdWVyeSggJ3NlbGVjdCBkYXRuYW1lIGZyb20gcGdf
ZGF0YWJhc2Ugd2hlcmUgZGF0aXN0ZW1wbGF0ZSA9IGZhbHNlOycgKTsNCgkJ
cmV0dXJuICR0aGlzLT5sb2FkUmVzdWx0QXJyYXkoKTsNCgl9DQoJLyoqDQoJ
ICogU2VsZWN0cyB0aGUgZGF0YWJhc2UsIGJ1dCByZWR1bmRhbnQgZm9yIFBv
c3RncmVTUUwNCgkgKg0KCSAqIEByZXR1cm4gYm9vbCBBbHdheXMgdHJ1ZQ0K
CSAqLw0KCWZ1bmN0aW9uIHNlbGVjdCgkZGF0YWJhc2U9bnVsbCkNCgl7DQoJ
CXJldHVybiB0cnVlOw0KCX0NCg0KCS8qKg0KCSAqIFJldHJpZXZlcyBpbmZv
cm1hdGlvbiBhYm91dCB0aGUgZ2l2ZW4gdGFibGVzDQoJICoNCgkgKiBAYWNj
ZXNzCXB1YmxpYw0KCSAqIEBwYXJhbSAJYXJyYXl8c3RyaW5nIAlBIHRhYmxl
IG5hbWUgb3IgYSBsaXN0IG9mIHRhYmxlIG5hbWVzDQoJICogQHBhcmFtCWJv
b2xlYW4JCQlPbmx5IHJldHVybiBmaWVsZCB0eXBlcywgZGVmYXVsdCB0cnVl
DQoJICogQHJldHVybglhcnJheSBBbiBhcnJheSBvZiBmaWVsZHMgYnkgdGFi
bGUNCgkgKi8NCglmdW5jdGlvbiBnZXRUYWJsZUZpZWxkcyggJHRhYmxlcywg
JHR5cGVvbmx5ID0gdHJ1ZSApDQoJew0KCQlzZXR0eXBlKCR0YWJsZXMsICdh
cnJheScpOyAvL2ZvcmNlIHRvIGFycmF5DQoJCSRyZXN1bHQgPSBhcnJheSgp
Ow0KDQoJCWZvcmVhY2ggKCR0YWJsZXMgYXMgJHRibHZhbCkNCgkJew0KCQkJ
JHRoaXMtPnNldFF1ZXJ5KCAnU0VMRUNUIGNvbHVtbl9uYW1lIEZST00gaW5m
b3JtYXRpb25fc2NoZW1hLmNvbHVtbnMgV0hFUkUgdGFibGVfbmFtZSA9ICcu
JHRibHZhbC4nOycgKTsNCgkJCSRmaWVsZHMgPSAkdGhpcy0+bG9hZE9iamVj
dExpc3QoKTsNCg0KCQkJaWYoJHR5cGVvbmx5KQ0KCQkJew0KCQkJCWZvcmVh
Y2ggKCRmaWVsZHMgYXMgJGZpZWxkKSB7DQoJCQkJCSRyZXN1bHRbJHRibHZh
bF1bJGZpZWxkLT5GaWVsZF0gPSBwcmVnX3JlcGxhY2UoIi9bKDAtOSldLyIs
JycsICRmaWVsZC0+VHlwZSApOw0KCQkJCX0NCgkJCX0NCgkJCWVsc2UNCgkJ
CXsNCgkJCQlmb3JlYWNoICgkZmllbGRzIGFzICRmaWVsZCkgew0KCQkJCQkk
cmVzdWx0WyR0Ymx2YWxdWyRmaWVsZC0+RmllbGRdID0gJGZpZWxkOw0KCQkJ
CX0NCgkJCX0NCgkJfQ0KDQoJCXJldHVybiAkcmVzdWx0Ow0KCX0NCn0NCj8+
DQo=

--0023545bd06465813804765dd9dc
Content-Type: text/plain
Content-Disposition: inline
MIME-Version: 1.0
Content-Transfer-Encoding: quoted-printable


--=20
Sent via pgsql-php mailing list (pgsql-php@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-php

--0023545bd06465813804765dd9dc--

Re: PostgreSQL driver for Joomla review

am 20.10.2009 15:46:52 von Merlin Moncure

On Tue, Oct 20, 2009 at 8:02 AM, Thom Brown wrote:
> If anyone has a moment, could they review the PostgreSQL driver I
> wrote for Joomla's next major release? =A0The developers at Joomla have
> listened to the persistent noise created about only having MySQL as an
> option and are now accepting submissions for alternative database
> systems. (see http://groups.google.com/group/joomla-dev-cms/browse_thread=
/thread/1382dc6f4af56278#msg_9b95648941ef6fa7
> for this development)
>
> My submission can be found at:
> http://joomlacode.org/gf/project/joomla/tracker/?action=3DTr ackerItemEdit=
&tracker_item_id=3D18384
>
> Things to watch out for a version-dependent features and clumsy implement=
ations.

*) why bother with the version check in queryBatch? why not just do
begin->commit always?
*) no ability to delete?
*) looks like typo on line 713


keep up the good work...

merlin

--=20
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Re: PostgreSQL driver for Joomla review

am 20.10.2009 16:02:18 von Thom Brown

2009/10/20 Merlin Moncure :
> On Tue, Oct 20, 2009 at 8:02 AM, Thom Brown wrote:
>> If anyone has a moment, could they review the PostgreSQL driver I
>> wrote for Joomla's next major release? =A0The developers at Joomla have
>> listened to the persistent noise created about only having MySQL as an
>> option and are now accepting submissions for alternative database
>> systems. (see http://groups.google.com/group/joomla-dev-cms/browse_threa=
d/thread/1382dc6f4af56278#msg_9b95648941ef6fa7
>> for this development)
>>
>> My submission can be found at:
>> http://joomlacode.org/gf/project/joomla/tracker/?action=3DTr ackerItemEdi=
t&tracker_item_id=3D18384
>>
>> Things to watch out for a version-dependent features and clumsy implemen=
tations.
>
> *) why bother with the version check in queryBatch? =A0why not just do
> begin->commit always?

To be honest, I hadn't touched that function. That's entirely
inherited from the MySQL one, but you're right, for Postgres there's
no need to check the version.

> *) no ability to delete?

The driver has to match that of the MySQL one in Joomla, so I couldn't
implement functionality which wouldn't be used by every driver. The
only thing I added which differed was a concatentation operator which
I put in for future implementation as I believe it will be necessary
if they're going to adapt the existing codebase to support multiple
database systems.

> *) looks like typo on line 713

Yes, that's just left over from me quickly trying to tidy up my
comments as I couldn't get the proper version from the site. Please
ignore it as it isn't in my actual submission.

Thanks Merlin!

Thom

--=20
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Re: PostgreSQL driver for Joomla review

am 20.10.2009 19:29:07 von Alban Hertroys

On 20 Oct 2009, at 14:02, Thom Brown wrote:

> If anyone has a moment, could they review the PostgreSQL driver I
> wrote for Joomla's next major release? The developers at Joomla have
> listened to the persistent noise created about only having MySQL as an
> option and are now accepting submissions for alternative database
> systems. (see http://groups.google.com/group/joomla-dev-cms/browse_thread/ thread/1382dc6f4af56278#msg_9b95648941ef6fa7
> for this development)
>
> My submission can be found at:
> http://joomlacode.org/gf/project/joomla/tracker/?action=Trac kerItemEdit&tracker_item_id=18384
>
> Things to watch out for a version-dependent features and clumsy
> implementations.


You miss a keyword in your query in renameTable; it should be " RENAME
TO ", not " TO ".

Wouldn't it be convenient to have an EXPLAIN ANALYSE version of explain
()? Maybe with a boolean parameter?

In insertObject() you have a query "SELECT $keyName AS 'id' FROM
$table'" - That line contains two syntax errors: 'id' (You probably
meant "id") and $table' (spurious trailing quote).

Regards,
Alban Hertroys

--
Screwing up is the best way to attach something to the ceiling.


!DSPAM:737,4addf36611682031315238!



--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Re: PostgreSQL driver for Joomla review

am 20.10.2009 21:00:19 von Thom Brown

2009/10/20 Alban Hertroys :
> You miss a keyword in your query in renameTable; it should be " RENAME TO ",
> not " TO ".

Thanks for spotting that. I've made my amendments for next submit.

> Wouldn't it be convenient to have an EXPLAIN ANALYSE version of explain()?
> Maybe with a boolean parameter?

The problem is, I don't see where they're using this function, so if
they're using it to EXPLAIN an INSERT, UPDATE or DELETE statement,
ANALYZE would execute it... unless I roll it back straight after.

> In insertObject() you have a query "SELECT $keyName AS 'id' FROM $table'" -
> That line contains two syntax errors: 'id' (You probably meant "id") and
> $table' (spurious trailing quote).

Again, you're right and well spotted. :) Fixed both of those.

Cheers for helping out Alban! :D

Thom

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Re: PostgreSQL driver for Joomla review

am 21.10.2009 10:52:42 von Csaba Nagy

Hi Thom,

Sorry for the delay, I got sick in the meantime. I see that others
already did some review, I will do a quick one too, later maybe I'll
actually try it out... so after a quick review:

* on line 218, the " ENCODING '$DBname')" part feels wrong, you probably
want hardcoded UTF8 encoding there ?
* as Merlin already commented, transactions are always safe in postgres,
this is no mysql ;-)
* again, as Merlin commented, getTableList is getting the data bases,
which doesn't make sense, but maybe you actually wanted to get the
tables - in this case you don't have a typo but you need to change the
query ;-)

If I'll get some time I'll test it too, but likely not this week...

Cheers,
Csaba.


On Tue, 2009-10-20 at 15:28 +0200, Thom Brown wrote:
> 2009/10/20 Reid Thompson :
> > your attachment contains this...
> >
> >
> > > > "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> >
> >
> > 403 - Forbidden
> >
> >
> >

403 - Forbidden


> >
> >
> >
>
> Erk.. that's weird. I got that too even after being logged in. I'm
> not sure how anyone can review it if no-one has access to it.
>
> I've attached my working version which differs only slightly to
> conform with coding-styles required by Joomla.
>
> Apologies
>
> Thom


--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

Re: PostgreSQL driver for Joomla review

am 21.10.2009 11:17:59 von Thom Brown

2009/10/21 Csaba Nagy :
> Hi Thom,
>
> Sorry for the delay, I got sick in the meantime. I see that others
> already did some review, I will do a quick one too, later maybe I'll
> actually try it out... so after a quick review:
>
> * on line 218, the " ENCODING '$DBname')" part feels wrong, you probably
> want hardcoded UTF8 encoding there ?
> * as Merlin already commented, transactions are always safe in postgres,
> this is no mysql ;-)
> * again, as Merlin commented, getTableList is getting the data bases,
> which doesn't make sense, but maybe you actually wanted to get the
> tables - in this case you don't have a typo but you need to change the
> query ;-)
>
> If I'll get some time I'll test it too, but likely not this week...

Thanks for the feedback Csaba,

Yes, I will change the function which uses transactions, and also
replace any conditional UTF8 statements with hard-coded ones.

The getTableList function...erm... not sure what I was thinking there.
How about:

select tablename from pg_tables where schemaname='public';

As for testing it, you won't be able to with the existing Joomla code
base as most of the queries will fail as they've been terribly
written, and that's because MySQL lets you get away with it for some
reason. I imagine the only way to test it is to either get a copy of
modified Joomla from me (although it still needs work), or create a
test app which uses that class, but you will need the parent JDatabase
class from Joomla too... and not sure how deep that rabbit hole goes
as that will also in turn inherit from another class.

Thanks again.

Thom

--
Sent via pgsql-general mailing list (pgsql-general@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general