Yes, I just ran into it and trying it. thanks, Dag.
On Tue, Feb 16, 2010 at 11:51 AM, Dag H. Wanvik <[email protected]> wrote: > Mamta Satoor <[email protected]> writes: > > >> Hi, >> >> I am working on writing a test for INSERT statement which will cause >> INSERT trigger to fire. The INSERT is being done into a table with a >> large BLOB column. The table definition looks as follows create table >> table1 (id int, status smallint, bl blob(2G)) >> >> My goal is to run this INSERT statement inside a java program with a >> limited heap to see if I will run into any OOMs during trigger >> execution because we are trying to stream the data into memory. The >> way I am trying to insert large LOB is as follows >> System.out.println("Inserting into table1 to cause insert >> trigger to fire"); >> PreparedStatement ps = conn.prepareStatement( >> "insert into table1(id, status, bl) values(101, 0, >> ?)"); >> byte[] arr = new byte[300000*1024]; >> for (int i = 0; i < arr.length; i++) >> arr[i] = (byte)4; >> ps.setBinaryStream(1, new ByteArrayInputStream(arr), >> arr.length); >> ps.executeUpdate(); >> conn.commit(); >> But the above code runs into OOM for byte[] arr = new >> byte[300000*1024]; because I do not have enough heap available. I was >> wondering if there was a way for me to use a stream to insert a pretty >> large LOB into my table without having a physical file on the disk >> from which I will stream the data in. I do not care about the actual >> data. As shown above, I am just inserting a large quantity of (byte)4 >> in the LOB. Would appreciate if anyone knows of a way for me to stream >> large data into LOB while running with limited heap. > > You might use the same method as used in BlobMemTest, perhaps? > (LoopingAlphabetStream). > > Thanks, > Dag >
