Received: from proxy.hddesign.com (proxy.hddesign.com [216.165.162.2]) by hub.org (8.10.1/8.10.1) with ESMTP id e96MwwJ60181 for ; Fri, 6 Oct 2000 18:58:58 -0400 (EDT) Received: from develope.hddesign.com (hddesign-6.hddesign.com [216.165.162.6]) by proxy.hddesign.com (8.9.3/8.9.3) with ESMTP id RAA03305 for ; Fri, 6 Oct 2000 17:58:37 -0500 Date: Fri, 6 Oct 2000 17:58:37 -0500 Message-Id: <200010062258.RAA03305@proxy.hddesign.com> To: pgsql-interfaces@postgresql.org From: David Huttleston Jr Reply-To: dhjr@hddesign.com Subject: Re: wrong documentation and others ..... X-Mailer: Pygmy (v0.4.1) In-Reply-To: <39DC5F29.E9F4023@dif.um.es> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="10.0.0.20.500.1658.970873129.332.13214" X-Archive-Number: 200010/28 This is a multi-part message in MIME format. --10.0.0.20.500.1658.970873129.332.13214 Content-Type: text/plain Hi Gabriel, We have been using the postgresql JDBC to serialize classes and have had no problems since we figured out that the doc's are wrong. I had to find answers in the source code. I've attached a class called Shelf which serializes any java object to a table. Within the code is the schema of a table called tbl_objectshelf which is suitable as a "shelf". I hope this saves you some time. Have fun, Dave On Thu, 05 Oct 2000 12:59:53 +0200, you wrote: > > > Hi all. > > I have several days working with LargeObject and postgres 7.0.2 and > I have found many problems. In the first time the postgresql doc is > wrong, in chapter 58 of PosgreSQL tutorial (JDBC Interfaces) it repot > who to work with Large Object and give code that is wrong: > > File file = new File("myimage.gif"); > FileInputStream fis = new FileInputStream(file); > PreparedStatement ps = conn.prepareStatement("insert into images > values (?,?)"); > ps.setString(1,file.getName()); > ps.setBinaryStream(2,fis,file.length()); > ps.executeUpdate(); > ps.close(); > fis.close(); > > PreparedStatement ps = con.prepareStatement("select oid from > images where name=?"); > ps.setString(1,"myimage.gif"); > ResultSet rs = ps.executeQuery(); > if(rs!=null) { > while(rs.next()) { > InputStream is = rs.getBinaryInputStream(1); > // use the stream in some way here > is.close(); > } > rs.close(); > } > ps.close(); > > > InputStream ARE NOT SUPPORTED in JDBC implementation ¡¿?¡ and > "getBinaryInputStream()" really is "getBinaryStream()". I think that it > is very serious. The other method (that I know) is using LargeObjectAPI, > but this fail every 9 times of PreparedStatement of setObject() sentence > ¡¡¡ and when use LargeObjectManager as in source examples. (I send other > messages to list) > > > Has PostgreSQL any way to work WELL with LargeObject.? > > Please reply me. > > Cheers, Gabi. > > > -- > Gabriel López Millán > Facultad de Informática -Universidad de Murcia > 30001 Murcia - España (Spain) > Telf: +34-968-364644 E-mail: gabilm@dif.um.es > > > > --10.0.0.20.500.1658.970873129.332.13214 Content-Type: application/octet-stream; name="Shelf.java" Content-Transfer-Encoding: base64 cGFja2FnZSBQQUN3ZWI7CgppbXBvcnQgamF2YS5zcWwuKjsKaW1wb3J0IGph dmEuaW8uKjsKCi8qKgogIFNoZWxmIGVuY2Fwc3VsYXRlcyB0aGUgcHJvY2Vz cyBvZiBzZXJpYWxpemluZyBhIGNsYXNzCiAgICAgdG8gYSB0YWJsZSBpbiBh IHBvc3RncmVzcWwgZGF0YWJhc2UuCgogIGF1dGhvcjogRGF2aWQgSHV0dGxl c3RvbiBKciAxMS8xNS8xOTk5CiAgbWFpbHRvOiBkaGpyQGhkZGVzaWduLmNv bQogIGxpY2Vuc2U6IGZyZWUKICBmZWVkYmFjazogSSdkIGxvdmUgc29tZSwg ZXNwZWNpYWxseSBhbnkgY29ycmVjdGlvbnMgb3IgaW1wcm92ZW1lbnRzLgoK ICBUaGUgdGFibGUgd2hvc2UgbmFtZSBpcyBwYXNzZWQgaW4gdGhlIGNvbnN0 cnVjdG9yIG11c3QgaGF2ZQogIHRocmVlIGZpZWxkcyBjYWxsZWQgImlkIiwg ImxhYmVsIiwgYW5kICJvYmplY3QiLiAgSXQncyBmaW5lIGlmIHRoZSB0YWJs ZQogIGhhcyBvdGhlciBmaWVsZHMuCgogIE5PVEU6IEJlY2F1c2UgdHJhbnNh Y3Rpb25zIGFyZSB1c2VkLCBlYWNoIFNoZWxmIGluc3RhbmNlIG11c3QgaGF2 ZQogIGV4Y2x1c2l2ZSBhY2Nlc3MgdG8gaXRzIGNvbm5lY3Rpb24uCiAgaWUg Y29uIG11c3Qgbm90IGJlIHNoYXJlZC4KCiAgVGhlIHNjaGVtYSBiZWxvdyBp cyBhbiBleGFtcGxlIG9mIGEgZ29vZCBzaGVsZiB0YWJsZToKCiAgQ1JFQVRF IFRBQkxFICJ0Ymxfb2JqZWN0c2hlbGYiICgKCSJpZCIgaW50NCBERUZBVUxU IG5leHR2YWwoJ3RibF9vYmplY3RzaGVsZl9pZF9zZXEnOjp0ZXh0KSBOT1Qg TlVMTCwKCSJsYWJlbCIgdGV4dCwKCSJvYmplY3QiIG9pZCwKCVBSSU1BUlkg S0VZICgiaWQiKSk7CgogIE5PVEU6IHRoZSBzZXF1ZW5jZSB0Ymxfb2JqZWN0 c2hlbGZfaWRfc2VxIHdpbGwgbmVlZCB0byBiZSBjcmVhdGVkIGZpcnN0Lgog Ki8KCnB1YmxpYyBjbGFzcyBTaGVsZgp7CiAgcHVibGljIFNoZWxmKENvbm5l Y3Rpb24gbmV3Q29uLCBTdHJpbmcgdGFibGUpCiAgICB0aHJvd3MgU1FMRXhj ZXB0aW9uCiAgewogICAgY29uID0gbmV3Q29uOwoKICAgIGNvbi5zZXRBdXRv Q29tbWl0KGZhbHNlKTsKCiAgICBTdHJpbmcgc3FsUHV0ID0gImluc2VydCBp bnRvIFwiIiArIHRhYmxlICsgIlwiIChsYWJlbCwgb2JqZWN0KSB2YWx1ZXMg KD8sPykiOwogICAgcHNQdXQgPSBjb24ucHJlcGFyZVN0YXRlbWVudChzcWxQ dXQpOwoKICAgIFN0cmluZyBzcWxHZXQgPSAic2VsZWN0IG9iamVjdCBmcm9t IFwiIiArIHRhYmxlICsgIlwiIHdoZXJlIGlkID0gPyI7CiAgICBwc0dldCA9 IGNvbi5wcmVwYXJlU3RhdGVtZW50KHNxbEdldCk7CiAgfQoKICBwdWJsaWMg dm9pZCBwdXRPYmplY3QoU3RyaW5nIGxhYmVsLCBPYmplY3Qgb2JqZWN0KQog ICAgdGhyb3dzIFNRTEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24KICB7CiAgICAg IC8vIGNyZWF0ZSB0ZW1wb3Jhcnkgc2luayB0byBzdG9yZSBvYmplY3QKICAg ICAgQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJhb3MgPSBuZXcgQnl0ZUFycmF5 T3V0cHV0U3RyZWFtKCk7CgogICAgICAvLyBmaWxsIHRlbXBvcmFyeSBzaW5r IHdpdGggc2VyaWFsaXplZCBvYmplY3QKICAgICAgT2JqZWN0T3V0cHV0U3Ry ZWFtIG9vcyA9IG5ldyBPYmplY3RPdXRwdXRTdHJlYW0oYmFvcyk7CiAgICAg IG9vcy53cml0ZU9iamVjdChvYmplY3QpOwoKICAgICAgLy8gY3JlYXRlIHNv dXJjZSBvdXQgb2YgdGhlIHRlbXBvcmFyeSBzaW5rCiAgICAgIGJ5dGVbXSBz aW5rID0gYmFvcy50b0J5dGVBcnJheSgpOwoKICAgICAgLy8gTk9URTogcGcg amRiYyBkcml2ZXIgZG9lcyBub3Qgc3VwcG9ydCBzdHJlYW1zIHlldAogICAg ICAvLyBCeXRlQXJyYXlJbnB1dFN0cmVhbSBiYWlzID0gbmV3IEJ5dGVBcnJh eUlucHV0U3RyZWFtKHNpbmspOwoKICAgICAgLy8gc2VuZCBldmVyeXRoaW5n IHRvIHRoZSBkYXRhYmFzZQogICAgICBjb24uY2xlYXJXYXJuaW5ncygpOwog ICAgICBwc1B1dC5jbGVhclBhcmFtZXRlcnMoKTsKICAgICAgcHNQdXQuc2V0 U3RyaW5nKDEsIGxhYmVsKTsKICAgICAgcHNQdXQuc2V0Qnl0ZXMoMiwgc2lu ayk7CgogICAgICAvLyBOT1RFOiBwZyBqZGJjIGRyaXZlciBkb2VzIG5vdCBz dXBwb3J0IHN0cmVhbXMgeWV0CiAgICAgIC8vIHBzUHV0LnNldEJpbmFyeVN0 cmVhbSgyLCBiYWlzLCBzaW5rLmxlbmd0aCk7CgogICAgICBwc1B1dC5leGVj dXRlVXBkYXRlKCk7CiAgICAgIGNvbi5jb21taXQoKTsKICAgICAgLy8gTk9U RTogaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93bgogICAgICAvLyAgIHRoZSBj b21taXQgd2lsbCBub3QgYmUgcmVhY2hlZCBhbmQgdGhlCiAgICAgIC8vICAg dHJhbnNhY3Rpb24gd2lsbCBiZSByb2xsZWQgYmFjayBieSBkZWZhdWx0CiAg fQoKICBwdWJsaWMgT2JqZWN0IGdldE9iamVjdChJbnRlZ2VyIGlkKQogICAg dGhyb3dzIFNRTEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24sIENsYXNzTm90Rm91 bmRFeGNlcHRpb24KICB7CiAgICBjb24uY2xlYXJXYXJuaW5ncygpOwogICAg cHNHZXQuY2xlYXJQYXJhbWV0ZXJzKCk7CiAgICBwc0dldC5zZXRTdHJpbmco MSwgaWQudG9TdHJpbmcoKSApOwogICAgUmVzdWx0U2V0IHJzID0gcHNHZXQu ZXhlY3V0ZVF1ZXJ5KCk7CiAgICBPYmplY3Qgb2JqID0gbnVsbDsKCiAgICBp ZiAocnMgIT0gbnVsbCkKICAgIHsKICAgICAgaWYgKCBycy5maXJzdCgpICkK ICAgICAgewogICAgICAgIElucHV0U3RyZWFtIGlzID0gcnMuZ2V0QmluYXJ5 U3RyZWFtKDEpOwogICAgICAgIE9iamVjdElucHV0U3RyZWFtIG9pcyA9IG5l dyBPYmplY3RJbnB1dFN0cmVhbShpcyk7CiAgICAgICAgb2JqID0gb2lzLnJl YWRPYmplY3QoKTsKICAgICAgICBvaXMuY2xvc2UoKTsKICAgICAgICBpcy5j bG9zZSgpOwogICAgICB9CiAgICAgIHJzLmNsb3NlKCk7CiAgICB9CiAgICBy ZXR1cm4gb2JqOwogIH0KCiAgcHJvdGVjdGVkIHZvaWQgZmluYWxpemUoKSB0 aHJvd3MgamF2YS5sYW5nLlRocm93YWJsZQogIHsKICAgIHBzUHV0LmNsb3Nl KCk7CiAgICBwc0dldC5jbG9zZSgpOwogICAgY29uLmNsb3NlKCk7CiAgICBz dXBlci5maW5hbGl6ZSgpOwogIH0KCiAgQ29ubmVjdGlvbiBjb247CiAgUHJl cGFyZWRTdGF0ZW1lbnQgcHNQdXQ7CiAgUHJlcGFyZWRTdGF0ZW1lbnQgcHNH ZXQ7Cn0K --10.0.0.20.500.1658.970873129.332.13214--