usage of option ByteaAsLongVarBinary?
usage of option ByteaAsLongVarBinary?
am 01.08.2006 09:16:50 von heiko.nardmann
--nextPart2444461.UjaZG4ycZk
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
Hi,
first to say that I am quite new to the ODBC interface ...
Now my question:
I want the ODBC driver (Linux/unixODBC) to map an incoming SQL_LOGVARBINARY=
to=20
BYTEA. Examining pgtypes.c I have seen that seems to be possible if the=20
bytea_as_longvarbinary member of the connection structure is set. Now ... I=
=20
am not sure how to set this. I have thought that this would be possible by=
=20
setting "ByteaAsLongVarBinary=3D1" inside of the odbc.ini. But without luck=
.
Once again I had a look at the sources - then I did not find any other way =
to=20
set it than setting it via the specified Windows GUI. Since I do use Linux=
=20
what is my way to set it? Do I have to go via the ODBC HDBC handle? Any=20
examples for this?
Thanks in advance!
=2D-=20
Heiko Nardmann (Dipl.-Ing. Technische Informatik)
secunet Security Networks AG - Sicherheit in Netzwerken (www.secunet.de),
Weidenauer Str. 223-225, D-57076 Siegen
Tel. : +49 271 48950-13, Fax : +49 271 48950-50
--nextPart2444461.UjaZG4ycZk
Content-Type: application/pgp-signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
iD8DBQBEzv/jpm53PRScYygRAvAhAJ93Da3SZy2JMzA8Mw6zTmMIqzeyQQCg 2J45
YM2rwdrh8F3m0J6got2N3Zk=
=GhBg
-----END PGP SIGNATURE-----
--nextPart2444461.UjaZG4ycZk--
Re: usage of option ByteaAsLongVarBinary?
am 01.08.2006 12:05:14 von Ludek Finstrle
> am not sure how to set this. I have thought that this would be possible by
> setting "ByteaAsLongVarBinary=1" inside of the odbc.ini. But without luck.
Yes. This is the right way. Do you have it at the right place in
odbc.ini?
> Once again I had a look at the sources - then I did not find any other way to
> set it than setting it via the specified Windows GUI. Since I do use Linux
I see this way (function calls):
PGAPI_DriverConnect
dconn_get_connect_attributes
dconn_get_attributes
copyAttributes
> what is my way to set it? Do I have to go via the ODBC HDBC handle? Any
> examples for this?
There is no such way.
It could be useful to try enable the mylog output (Debug = 1 in odbc.ini).
The mylog is placed in /tmp/mylog_*.log.
BTW could you send us the odbc.ini to check it?
Regards,
Luf
---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?
http://www.postgresql.org/docs/faq
Re: usage of option ByteaAsLongVarBinary?
am 01.08.2006 12:33:43 von heiko.nardmann
--nextPart23568746.4Fu1tHJ8oU
Content-Type: text/plain;
charset="iso-8859-15"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
Am Dienstag, 1. August 2006 12:05 schrieb Ludek Finstrle:
> > am not sure how to set this. I have thought that this would be possible
> > by setting "ByteaAsLongVarBinary=3D1" inside of the odbc.ini. But witho=
ut
> > luck.
>
> Yes. This is the right way. Do you have it at the right place in
> odbc.ini?
>
Not sure about it; here my odbc.ini:
[ODBC]
Trace =3D 1
TraceFile =3D /tmp/unixodbc.trace.log
debug=3D1
debugfile=3D/tmp/unixodbc.debug.log
[test-db]
Description =3D test-db
driver=3D/usr/lib/unixODBC/libodbcpsql.so
setup=3D/usr/lib/unixODBC/libodbcpsqlS.so
trace=3D1
tracefile=3D/tmp/unixodbc.trace.log
debug=3D1
debugfile=3D/tmp/unixodbc.debug.log
commlog=3D1
database=3Dtest-db
Servername=3D1.2.3.4
Port=3D5432
Username=3D
ReadOnly=3D0
ByteaAsLongVarBinary=3D1
> > Once again I had a look at the sources - then I did not find any other
> > way to set it than setting it via the specified Windows GUI. Since I do
> > use Linux
>
> I see this way (function calls):
> PGAPI_DriverConnect
> dconn_get_connect_attributes
> dconn_get_attributes
> copyAttributes
>
So do I have to use SQLDriverConnect() instead of SQLConnect() to have=20
PGAPI_DriverConnect() to be used?
Thanks for your help.
> > what is my way to set it? Do I have to go via the ODBC HDBC handle? Any
> > examples for this?
>
> There is no such way.
>
> It could be useful to try enable the mylog output (Debug =3D 1 in odbc.in=
i).
> The mylog is placed in /tmp/mylog_*.log.
>
> BTW could you send us the odbc.ini to check it?
>
> Regards,
>
> Luf
=2D-=20
Heiko Nardmann (Dipl.-Ing. Technische Informatik)
secunet Security Networks AG - Sicherheit in Netzwerken (www.secunet.de),
Weidenauer Str. 223-225, D-57076 Siegen
Tel. : +49 271 48950-13, Fax : +49 271 48950-50
--nextPart23568746.4Fu1tHJ8oU
Content-Type: application/pgp-signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
iD8DBQBEzy4Ipm53PRScYygRAqgbAKCCESJUr5CnYIrfqqWAsRIhFXJwRQCb Bzuq
W3G4avaXfSuyOnsz/uB07G8=
=p4Aq
-----END PGP SIGNATURE-----
--nextPart23568746.4Fu1tHJ8oU--
Re: usage of option ByteaAsLongVarBinary?
am 01.08.2006 12:48:52 von heiko.nardmann
--nextPart1929830.DN2XY3pldQ
Content-Type: text/plain;
charset="iso-8859-15"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline
Am Dienstag, 1. August 2006 09:16 schrieb Nardmann, Heiko:
> Hi,
>
> first to say that I am quite new to the ODBC interface ...
>
> Now my question:
>
> I want the ODBC driver (Linux/unixODBC) to map an incoming SQL_LOGVARBINA=
RY
> to BYTEA. Examining pgtypes.c I have seen that seems to be possible if the
> bytea_as_longvarbinary member of the connection structure is set. Now ...=
I
> am not sure how to set this. I have thought that this would be possible by
> setting "ByteaAsLongVarBinary=3D1" inside of the odbc.ini. But without lu=
ck.
> Once again I had a look at the sources - then I did not find any other way
> to set it than setting it via the specified Windows GUI. Since I do use
> Linux what is my way to set it? Do I have to go via the ODBC HDBC handle?
> Any examples for this?
>
> Thanks in advance!
One additional question: I saw that bytea_as_longvarbinary is initialized t=
o=20
'-1' in connection.c inside of CC_conninfo_init(). Does that mean that by=20
default this option is activated?
=2D-=20
Heiko Nardmann (Dipl.-Ing. Technische Informatik)
secunet Security Networks AG - Sicherheit in Netzwerken (www.secunet.de),
Weidenauer Str. 223-225, D-57076 Siegen
Tel. : +49 271 48950-13, Fax : +49 271 48950-50
--nextPart1929830.DN2XY3pldQ
Content-Type: application/pgp-signature
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2 (GNU/Linux)
iD8DBQBEzzGUpm53PRScYygRAgBcAJ9hxajwLKMOUyM6lIWDcXIV5bFqoQCd Ez04
sPWk1fdhPi/a3pOZBbYnANg=
=VB1g
-----END PGP SIGNATURE-----
--nextPart1929830.DN2XY3pldQ--
Re: usage of option ByteaAsLongVarBinary?
am 01.08.2006 14:20:39 von Ludek Finstrle
Tue, Aug 01, 2006 at 12:33:43PM +0200, Nardmann, Heiko wrote:
> Am Dienstag, 1. August 2006 12:05 schrieb Ludek Finstrle:
> > > am not sure how to set this. I have thought that this would be possible
> > > by setting "ByteaAsLongVarBinary=1" inside of the odbc.ini. But without
> > > luck.
> >
> > Yes. This is the right way. Do you have it at the right place in
> > odbc.ini?
>
> Not sure about it; here my odbc.ini:
>
> [ODBC]
> Trace = 1
> TraceFile = /tmp/unixodbc.trace.log
> debug=1
> debugfile=/tmp/unixodbc.debug.log
>
> [test-db]
> Description = test-db
> driver=/usr/lib/unixODBC/libodbcpsql.so
> setup=/usr/lib/unixODBC/libodbcpsqlS.so
> trace=1
> tracefile=/tmp/unixodbc.trace.log
> debug=1
> debugfile=/tmp/unixodbc.debug.log
debugfile isn't correct. trace is unixodbc option debug is psqlodbc optin.
> commlog=1
> database=test-db
> Servername=1.2.3.4
> Port=5432
> Username=
> ReadOnly=0
> ByteaAsLongVarBinary=1
It seems ok.
> > > Once again I had a look at the sources - then I did not find any other
> > > way to set it than setting it via the specified Windows GUI. Since I do
> > > use Linux
> >
> > I see this way (function calls):
> > PGAPI_DriverConnect
> > dconn_get_connect_attributes
> > dconn_get_attributes
> > copyAttributes
> >
>
> So do I have to use SQLDriverConnect() instead of SQLConnect() to have
> PGAPI_DriverConnect() to be used?
No I see the way in PGAPI_Connect too:
PGAPI_Connect
getDSNinfo
There is:
if (ci->bytea_as_longvarbinary < 0 || overwrite)
{
SQLGetPrivateProfileString(DSN, INI_BYTEAASLONGVARBINARY, "", temp, sizeof(temp), ODBC_INI);
if (temp[0])
ci->bytea_as_longvarbinary = atoi(temp);
}
How are you connecting? Please send us the row with SQLConnect and
the DSN value. Something like:
SQLConnect(hdbc,dsn,user,pass);
dsn = 'mydsn';
or
SQLConnect(hdbc,'mydsn',user,pass);
Are you able to use gdb to trace down the getDSNinfo?
Regards,
Luf
---------------------------(end of broadcast)---------------------------
TIP 9: In versions below 8.0, the planner will ignore your desire to
choose an index scan if your joining column's datatypes do not
match