Hello, I've got a problem inserting binary objects into the postgres database. I have binary objects (e.g. images or smth else) of any size which I want to insert into the database. Funny is it works for files larger than 8000 Bytes. If a file is less than 1000 Bytes I get the following message: Error message: --> invalid input syntax for type oid: "\074\077......"; If a file is between 1000 and 8000 Bytes my program just crashes silently. This is a really strange behaviour since the binary files vary in sizes (big and small onces). It works with C++ using the SQLPutData class provided by the ODBC layer. In C# I don't have anything like that (right?). So, now the question is: Is that an error in my program, my way of accessing the database, of creating the insert command, of the C# .NET code, or the postgreSQL ODBC driver I use? I doubt it is the last one, since it works with C++. Can anyone help me please?? Technical output (source code, logs, etc): -------------------------------------------------------------------------- I use: - WinXP SP2 - VS 2005 - Database version: 8.2.0 - PostgreSQL ANSI Driver Version 8.02.02.00 - I create a ODBC DSN entry - standard settings - bytea as LO unchecked - unchecked LF<> conversion Here is my C# code to write the binary object: public int InsertBLOB(byte[] blob) { OdbcDataAdapter adapter = null; try { adapter = new OdbcDataAdapter(); adapter.InsertCommand = new OdbcCommand(); adapter.InsertCommand.CommandText = "INSERT INTO binary_object (object) VALUES (?)"; adapter.InsertCommand.Connection = new OdbcConnection(this._connection.ConnectionString); // my DSN connection string // here the binary parameter is defined adapter.InsertCommand.Parameters.Add("blob", OdbcType.VarBinary); adapter.InsertCommand.Parameters["blob"].Direction = ParameterDirection.Input; adapter.InsertCommand.Parameters["blob"].Value = blob; } catch (Exception e) { LogError(e); } try { adapter.InsertCommand.Connection.Open(); int rowsAffected = adapter.InsertCommand.ExecuteNonQuery(); adapter.InsertCommand.Connection.Close(); } catch (Exception e) { LogError(e); } } Here is my database log from the insert statement from an insert when the file is larger than 8000 Bytes: --> obviously the LO with the oid 121156 was created successfully 2007-01-11 17:44:35 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:41 LOG: 00000: statement: set DateStyle to 'ISO' 2007-01-11 17:44:41 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:41 LOG: 00000: statement: set geqo to 'OFF' 2007-01-11 17:44:41 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:41 LOG: 00000: statement: set extra_float_digits to 2 2007-01-11 17:44:41 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:41 LOG: 00000: statement: select oid, typbasetype from pg_type where typname = 'lo' 2007-01-11 17:44:41 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:41 LOG: 00000: statement: select pg_client_encoding() 2007-01-11 17:44:41 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:41 LOG: 00000: statement: BEGIN 2007-01-11 17:44:41 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:41 LOG: 00000: fastpath function call: "lo_creat" (OID 957) 2007-01-11 17:44:41 LOCATION: HandleFunctionRequest, fastpath.c:333 2007-01-11 17:44:41 LOG: 00000: fastpath function call: "lo_open" (OID 952) 2007-01-11 17:44:41 LOCATION: HandleFunctionRequest, fastpath.c:333 2007-01-11 17:44:41 LOG: 00000: fastpath function call: "lo_lseek" (OID 956) 2007-01-11 17:44:41 LOCATION: HandleFunctionRequest, fastpath.c:333 2007-01-11 17:44:41 LOG: 00000: fastpath function call: "lowrite" (OID 955) 2007-01-11 17:44:41 LOCATION: HandleFunctionRequest, fastpath.c:333 2007-01-11 17:44:41 LOG: 00000: fastpath function call: "lo_close" (OID 953) 2007-01-11 17:44:41 LOCATION: HandleFunctionRequest, fastpath.c:333 2007-01-11 17:44:41 LOG: 00000: statement: COMMIT 2007-01-11 17:44:41 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:41 LOG: 00000: statement: INSERT INTO binary_object (object) VALUES ('121156'::lo) 2007-01-11 17:44:41 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:48 LOG: 00000: statement: set DateStyle to 'ISO' 2007-01-11 17:44:48 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:48 LOG: 00000: statement: set geqo to 'OFF' 2007-01-11 17:44:48 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:48 LOG: 00000: statement: set extra_float_digits to 2 2007-01-11 17:44:48 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:48 LOG: 00000: statement: select oid, typbasetype from pg_type where typname = 'lo' 2007-01-11 17:44:48 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:48 LOG: 00000: statement: select pg_client_encoding() 2007-01-11 17:44:48 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:48 LOG: 00000: statement: set DateStyle to 'ISO' 2007-01-11 17:44:48 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:48 LOG: 00000: statement: set geqo to 'OFF' 2007-01-11 17:44:48 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:48 LOG: 00000: statement: set extra_float_digits to 2 2007-01-11 17:44:48 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:48 LOG: 00000: statement: select oid, typbasetype from pg_type where typname = 'lo' 2007-01-11 17:44:48 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 17:44:48 LOG: 00000: statement: select pg_client_encoding() 2007-01-11 17:44:48 LOCATION: exec_simple_query, postgres.c:811 ............. This is a database log file when the XML file is small (here a test with a few "1" values as bytes: --> it seems here to switch to insert a bytea object, which of course is not the case. 2007-01-11 18:14:17 LOG: 00000: statement: set DateStyle to 'ISO' 2007-01-11 18:14:17 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 18:14:17 LOG: 00000: statement: set geqo to 'OFF' 2007-01-11 18:14:17 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 18:14:17 LOG: 00000: statement: set extra_float_digits to 2 2007-01-11 18:14:17 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 18:14:17 LOG: 00000: statement: select oid, typbasetype from pg_type where typname = 'lo' 2007-01-11 18:14:17 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 18:14:17 LOG: 00000: statement: select pg_client_encoding() 2007-01-11 18:14:17 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 18:14:17 WARNING: 22P06: nonstandard use of \\ in a string literal at character 44 2007-01-11 18:14:17 HINT: Use the escape string syntax for backslashes, e.g., E'\\'. 2007-01-11 18:14:17 LOCATION: check_string_escape_warning, scan.l:932 2007-01-11 18:14:17 LOG: 00000: statement: INSERT INTO binary_object (object) VALUES ('\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\0 01\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\ 001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\ \001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001') 2007-01-11 18:14:17 LOCATION: exec_simple_query, postgres.c:811 2007-01-11 18:14:17 ERROR: 22P02: invalid input syntax for type oid: "\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\ 001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\0 01\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001" 2007-01-11 18:14:17 LOCATION: oidin_subr, oid.c:64 2007-01-11 18:14:17 STATEMENT: INSERT INTO binary_object (object) VALUES ('\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\0 01\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\ 001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\ \001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001\\001') My table binary_object looks like this: ...................... CREATE TABLE binary_object ( id serial NOT NULL, "object" lo NOT NULL, CONSTRAINT binary_object_pkey PRIMARY KEY (id) ) WITHOUT OIDS; ALTER TABLE binary_object OWNER TO postgresadmin; GRANT ALL ON TABLE binary_object TO postgresadmin; GRANT SELECT, UPDATE, INSERT, DELETE ON TABLE binary_object TO machine; -------------------------------------------------------------------------- Thanks for any answers!! NM