Thread: Columns out of range-error

Columns out of range-error

From
"Tobias Zielke"
Date:
Hi,

We have a Problem with postgresql 7.4.3 and jdbc

We have a table with 200 columns and want to insert 50 datasets (40-50
columns each) into this table. With this we write a file into the memory
with about 650 columns. And this displays an error: columnindex out of
range.
In the #postgres IRC i was told to ask you if this could be a bug in jdbc.

Thnx
Woolve73
Toby


Re: Columns out of range-error

From
Dave Cramer
Date:
Toby,

You will have to give us more information.

can you show us the relevant code ?

But in general you can't put 650 columns into 200 columns ?

How is that supposed to work ?

Dave
On Fri, 2004-08-20 at 10:20, Tobias Zielke wrote:
> Hi,
>
> We have a Problem with postgresql 7.4.3 and jdbc
>
> We have a table with 200 columns and want to insert 50 datasets (40-50
> columns each) into this table. With this we write a file into the memory
> with about 650 columns. And this displays an error: columnindex out of
> range.
> In the #postgres IRC i was told to ask you if this could be a bug in jdbc.
>
> Thnx
> Woolve73
> Toby
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 4: Don't 'kill -9' the postmaster
>
--
Dave Cramer
519 939 0336
ICQ # 14675561
www.postgresintl.com


Re: Columns out of range-error

From
"Andreas Percher"
Date:
I'm a Newbe in using commitment control.
Toby (Woolve73) is my Colleague.
So I try to refine his question.

Step 1
We've got a Table with 203 columns.
We wan't to add (insert) up to 150 new rows.
Each row need 38-52 columns.

Step 2
Using pgAdmin anithing is fine.
Adding "begin" and "roolback" (we don't want to kill our live database)
- it works. Sending the inserts out of our Java-Application without
start/roolback works too.

Step 3
Now back in Java.
Sending a "begin" it gives us a SQL Error
"Spaltenindex außerhalb des gültigen Bereichs"
Which meens
"The column index is out of range."

--> postgresql.res.colrange:Spaltenindex außerhalb des gültigen Bereichs

--> postgresql.res.colrange:The column index is out of range.

This error message occur after 13-16 inserts, depending on the column
count of each insert. Sending the inserts without the long data field
"specialequipment", results in letting the error occur one insert later.

In case of the Error, round about 600 columns (counted over all inserts)
are waiting for its commitment.

Step 4
We are confused.
We need to use commitment control, because if one insert, update or
delete fails, or if an error in the data input stream occurs, we have to
rollback.

> Toby,
>
> You will have to give us more information.
> can you show us the relevant code ?
> But in general you can't put 650 columns into 200 columns ? How is
> that supposed to work ?
>
> Dave
> On Fri, 2004-08-20 at 10:20, Tobias Zielke wrote:
> > Hi,
> >
> > We have a Problem with postgresql 7.4.3 and jdbc
> > ...
> > Thnx
> > Woolve73
> > Toby


Re: Columns out of range-error

From
"Andreas Percher"
Date:
> First of all, do not use begin, use setAutoCommit(false);
Silly question:
Where ?
How ?

I don't get any acces to the postgresDB, only the JDBC-Conection.

> I still need to see the loop that you are inserting the data in?
This is what Woolve73 will send to you, i guess.

Dave
On Fri, 2004-08-20 at 11:05, (AnPe) Andreas Percher wrote:
> I'm a Newbe in using commitment control.
> Toby (Woolve73) is my Colleague.
> So I try to refine his question.
>
> Step 1
> We've got a Table with 203 columns.
> We wan't to add (insert) up to 150 new rows.
> Each row need 38-52 columns.
>
> Step 2
> Using pgAdmin anithing is fine.
> Adding "begin" and "roolback" (we don't want to kill our live
> database)
> - it works.
> Sending the inserts out of our Java-Application without start/roolback
> works too.
>
> Step 3
> Now back in Java.
> Sending a "begin" it gives us a SQL Error
> "Spaltenindex außerhalb des gültigen Bereichs"
> Which meens
> "The column index is out of range."
>
> --> postgresql.res.colrange:Spaltenindex außerhalb des gültigen
> --> Bereichs postgresql.res.colrange:The column index is out of range.
>
> This error message occur after 13-16 inserts, depending on the column
> count of each insert. Sending the inserts without the long data field
> "specialequipment", results in letting the error occur one insert
> later.
>
> In case of the Error, round about 600 columns (counted over all
> inserts) are waiting for its commitment.
>
> Step 4
> We are confused.
> We need to use commitment control, because if one insert, update or
> delete fails, or if an error in the data input stream occurs, we have
> to rollback.
>
> > Toby,
> >
> > You will have to give us more information.
> > can you show us the relevant code ?
> > But in general you can't put 650 columns into 200 columns ? How is
> > that supposed to work ?
> >
> > Dave
> > On Fri, 2004-08-20 at 10:20, Tobias Zielke wrote:
> > > Hi,
> > >
> > > We have a Problem with postgresql 7.4.3 and jdbc
> > > ...
> > > Thnx
> > > Woolve73
> > > Toby


Re: Columns out of range-error

From
Oliver Jowett
Date:
Andreas Percher wrote:
>>First of all, do not use begin, use setAutoCommit(false);
>
> Silly question:
> Where ?
> How ?
>
> I don't get any acces to the postgresDB, only the JDBC-Conection.

It's a method on the JDBC Connection object:
java.sql.Connection.setAutoCommit()

>>I still need to see the loop that you are inserting the data in?
>
> This is what Woolve73 will send to you, i guess.

It'd be useful if you could send it to the list too..

-O

Re: Columns out of range-error

From
Oliver Jowett
Date:
Andreas Percher wrote:

> Sending a "begin" it gives us a SQL Error
> "Spaltenindex außerhalb des gültigen Bereichs"
> Which meens
> "The column index is out of range."
>
> --> postgresql.res.colrange:Spaltenindex außerhalb des gültigen Bereichs
>
> --> postgresql.res.colrange:The column index is out of range.
>
> This error message occur after 13-16 inserts, depending on the column
> count of each insert. Sending the inserts without the long data field
> "specialequipment", results in letting the error occur one insert later.
>
> In case of the Error, round about 600 columns (counted over all inserts)
> are waiting for its commitment.

Can you provide the full stack trace? I just dug through the driver and
the only place that this exception will be thrown is when querying a
ResultSet (either a ResultSet.getXXX() call, or from inspecting a
ResultSetMetaData). It seems strange that these methods would ever get
invoked if you're only doing updates..

-O

Re: Columns out of range-error

From
Dave Cramer
Date:
Oliver,

This should throw an error if you try to setXXX(n,obj) if n is greater
than the number of parameters you have?

dave
On Fri, 2004-08-20 at 22:18, Oliver Jowett wrote:
> Andreas Percher wrote:
>
> > Sending a "begin" it gives us a SQL Error
> > "Spaltenindex außerhalb des gültigen Bereichs"
> > Which meens
> > "The column index is out of range."
> >
> > --> postgresql.res.colrange:Spaltenindex außerhalb des gültigen Bereichs
> >
> > --> postgresql.res.colrange:The column index is out of range.
> >
> > This error message occur after 13-16 inserts, depending on the column
> > count of each insert. Sending the inserts without the long data field
> > "specialequipment", results in letting the error occur one insert later.
> >
> > In case of the Error, round about 600 columns (counted over all inserts)
> > are waiting for its commitment.
>
> Can you provide the full stack trace? I just dug through the driver and
> the only place that this exception will be thrown is when querying a
> ResultSet (either a ResultSet.getXXX() call, or from inspecting a
> ResultSetMetaData). It seems strange that these methods would ever get
> invoked if you're only doing updates..
>
> -O
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
>       subscribe-nomail command to majordomo@postgresql.org so that your
>       message can get through to the mailing list cleanly
>
--
Dave Cramer
519 939 0336
ICQ # 14675561
www.postgresintl.com


Re: Columns out of range-error

From
Oliver Jowett
Date:
Dave Cramer wrote:
> Oliver,
>
> This should throw an error if you try to setXXX(n,obj) if n is greater
> than the number of parameters you have?

On a PreparedStatement? That throws postgresql.prep.range not
postgresql.res.colrange.

The ResultSet.updateXXX() methods would be the other place I would
expect an exception to be thrown from, but I looked at them just now and
they seem to do no range checking at all -- you'll just get an
ArrayIndexOutOfBoundsException!

-O

Re: Columns out of range-error

From
"Andreas Percher"
Date:
...SaveCar...
434    Statement st = db.query(sel);
435    ResultSet rs = st.getResultSet();
436    if (rs!=null && rs.next()) {
437      bOK = updateRecord(rs.getString(0));
438    } else {
439      bOK = insertRecord();
...

OHHHH GOOOOOD
What a silly Idiot I am ???

rs.getString(0)

0 ?

0 !!!!!!

SORRY !!!
Thank you for all Your help !!!!!