Thread: VBA 6 crashes with WIN2K, Postgres 8.1, why ? which dll ??
Hi all, I'm a beginner to MS Windows. I began to to test VBA 6.0(SP6) with Postgresql 8.1 -with odbc- on WIN2K(SP4). For the test (accessing postgres db thru visual basic) I use the code, given by the distro (psqlODBC HOWTO- Visual Basic). The first problem I've encounted that the code in the given test snippet is not full functioning: "rs.Refresh" doesn't implemented ? I use in the "Project Preferences" "Microsoft ActiveXData Objects 2.1 library (msado21.tlb) I've installed some other MS stuff on the machine, and now the Postgres database call makes a memory exception and crashes. Q 1.: Is this general, or some libraries are wrong on my system ? Q 2.: Which MS tools are to control/update the msado-libraries Q.3.: Which msado or similars are necessary to connect with visual basic to postgres ? thank you in advance testuser vba ----------------- Sub Main() Dim cn as New ADODB.Connection Dim rs as New ADODB.Recordset 'Open the connection cn.Open "DSN=<MyDataSourceName>;" & _ "UID=<MyUsername>;" & _ "PWD=<MyPassword>;" & _ "Database=<MyDatabaseName>" 'For updateable recordsets we would typically open a Dynamic recordset. 'Forward Only recordsets are much faster but can only scroll forward and 'are read only. Snapshot recordsets are read only, but scroll in both 'directions. rs.Open "SELECT id, data FROM vbtest", cn, adOpenDynamic 'Loop though the recordset and print the results 'We will also update the accessed column, but this time access it through 'the Fields collection. ISO-8601 formatted dates/times are the safest IMHO. While Not rs.EOF Debug.Print rs!id & ": " & rs!data rs.Fields("accessed") = Format(Now, "yyyy-MM-dd hh:mm:ss") rs.Update rs.MoveNext Wend 'Add a new record to the recordset rs.AddNew rs!id = 76 rs!data = 'More random data' rs!accessed = Format(Now, "yyyy-MM-dd hh:mm:ss") rs.Update 'Insert a new record into the table cn.Execute "INSERT INTO vbtest (id, data) VALUES (23, 'Some random data');" 'Refresh the recordset to get that last record... rs.Refresh 'Get the record count rs.MoveLast rs.MoveFirst MsgBox rs.RecordCount & " Records are in the recordset!" 'Cleanup If rs.State <> adStateClosed Then rs.Close Set rs = Nothing If cn.State <> adStateClosed Then cn.Close Set cn = Nothing End Sub
> Q 1.: Is this general, or some libraries are wrong on my system ? There is problem in psqlodbc >= 08.01 (I'm not sure if in 08.00 too). > 'For updateable recordsets we would typically open a Dynamic recordset. Updateable recordsets are broken since begin of rewrite to libpq library. This is the problem. > 'Forward Only recordsets are much faster but can only scroll forward and This and static cursors may work correctly. > rs.Open "SELECT id, data FROM vbtest", cn, adOpenDynamic adOpenDynamic isn't supported with the newest version. If you need this behaviour you can try older 07.03 (or maybe 08.00) version of psqlodbc. We are at the start point of rewriting the psqlODBC driver. Please be patient with us. To all: Isn't the time to change the documentation? Is here some volunteer which provide this job for us? Regards, Luf
> -----Original Message----- > From: pgsql-odbc-owner@postgresql.org > [mailto:pgsql-odbc-owner@postgresql.org] On Behalf Of Ludek Finstrle > Sent: 06 January 2006 06:33 > To: linuxgps > Cc: pgsql-odbc@postgresql.org > Subject: Re: [ODBC] VBA 6 crashes with WIN2K, Postgres 8.1, > why ? which dll ?? > > > Q 1.: Is this general, or some libraries are wrong on my system ? > > There is problem in psqlodbc >= 08.01 (I'm not sure if in 08.00 too). > > > 'For updateable recordsets we would typically open a > Dynamic recordset. > > Updateable recordsets are broken since begin of rewrite to libpq > library. This is the problem. Updateable cursors have *always* been broken. It's an experimental feature prior to 8.0 which has never had all the kinks worked out. Regards, Dave
> > Updateable recordsets are broken since begin of rewrite to libpq > > library. This is the problem. > > Updateable cursors have *always* been broken. It's an experimental > feature prior to 8.0 which has never had all the kinks worked out. I'm sorry I mean completely broken (it has never worked in 08.01). You can have a luck with older releases. It's only partialy broken there. Why it's in documentation when the support was *always* broken? I hope the example in documentation is working in older releases. I hasn't tested it. Regards, Luf
> -----Original Message----- > From: Ludek Finstrle [mailto:luf@pzkagis.cz] > Sent: 06 January 2006 08:39 > To: Dave Page > Cc: pgsql-odbc@postgresql.org > Subject: Re: [ODBC] VBA 6 crashes with WIN2K, Postgres 8.1, > why ? which dll ?? > > Why it's in documentation when the support was *always* broken? > I hope the example in documentation is working in older releases. > I hasn't tested it. There's an example in the documentation? Where? Regards, Dave
-- _____________________________________________ Hela Gewürzwerk Hermann Laue GmbH & Co.KG EDV Thomas Holschen Beimoorweg 11 22926 Ahrensburg Tel. : +49 4102/496-381 http://www.hela-food.de _____________________________________________ >>> "Dave Page" <dpage@vale-housing.co.uk> schrieb am Freitag, 6. Januar 2006 um 10:29 in Nachricht <E7F85A1B5FF8D44C8A1AF6885BC9A0E4E7EDEA@ratbert.vale-housing.co.uk>: > >> -----Original Message----- >> From: Ludek Finstrle [mailto:luf@pzkagis.cz] >> Sent: 06 January 2006 08:39 >> To: Dave Page >> Cc: pgsql-odbc@postgresql.org >> Subject: Re: [ODBC] VBA 6 crashes with WIN2K, Postgres 8.1, >> why ? which dll ?? >> >> Why it's in documentation when the support was *always* broken? >> I hope the example in documentation is working in older releases. >> I hasn't tested it. > > There's an example in the documentation? Where? > > Regards, Dave > > ---------------------------(end of broadcast)--------------------------- > TIP 5: don't forget to increase your free space map settings The Example is installed with MSI-Installer for psqlODBC 08.01.0101. It's installed as c:/Programme/psqlODBC/docs/howto-vb.html. Regards Thomas ________________________________________________________ psqlODBC HOWTO - Visual Basic Author: Dave Page (dpage@postgresql.org) Release Date: 13 November 2001 Description: Example based Mini-Howto on Accessing PostgreSQL from Visual Basic This document provides some sample code to get you started with Visual Basic & PostgreSQL. Requirements to get the subroutines to work: * Visual Basic 5/6 * A reference in the VB project to Microsoft ActiveX Data Objects * A PostgreSQL datasource. The example code shown below may need some modification to make it actually work in your environment. There is one table used in the example: CREATE TABLE vbtest( id int4, data text, accessed timestamp ); Code Sub Main() Dim cn as New ADODB.Connection Dim rs as New ADODB.Recordset 'Open the connection cn.Open "DSN=<MyDataSourceName>;" & _ "UID=<MyUsername>;" & _ "PWD=<MyPassword>;" & _ "Database=<MyDatabaseName>" 'For updateable recordsets we would typically open a Dynamic recordset. 'Forward Only recordsets are much faster but can only scroll forward and 'are read only. Snapshot recordsets are read only, but scroll in both 'directions. rs.Open "SELECT id, data FROM vbtest", cn, adOpenDynamic 'Loop though the recordset and print the results 'We will also update the accessed column, but this time access it through 'the Fields collection. ISO-8601 formatted dates/times are the safest IMHO. While Not rs.EOF Debug.Print rs!id & ": " & rs!data rs.Fields("accessed") = Format(Now, "yyyy-MM-dd hh:mm:ss") rs.Update rs.MoveNext Wend 'Add a new record to the recordset rs.AddNew rs!id = 76 rs!data = 'More random data' rs!accessed = Format(Now, "yyyy-MM-dd hh:mm:ss") rs.Update 'Insert a new record into the table cn.Execute "INSERT INTO vbtest (id, data) VALUES (23, 'Some random data');" 'Refresh the recordset to get that last record... rs.Refresh 'Get the record count rs.MoveLast rs.MoveFirst MsgBox rs.RecordCount & " Records are in the recordset!" 'Cleanup If rs.State <> adStateClosed Then rs.Close Set rs = Nothing If cn.State <> adStateClosed Then cn.Close Set cn = Nothing End Sub Useful Functions ' The escapeString function can be used to fix strings for us in INSERT and ' UPDATE SQL statements. It will take a value, and return it ready for ' use in your statement as NULL, or quoted with backslashes and single quotes ' escaped. Function escapeString(vValue As Variant) As String If IsNull(vValue) Then escapeString = "NULL" else escapeString = "'" & Replace(Replace(vValue, "", ""), "'", "''" ) & "'" end if End Function Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte den Absender und löschen Sie diese E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist nicht gestattet. Aus Rechts- und Sicherheitsgründen ist die in dieser E-Mail gegebene Information nicht rechtsverbindlich. This e-mail contains confidential and/or privileged information. If you are not the intended addressee or have received this e-mail in error please notify the sender and delete this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. Due to legal and security reasons the information contained in this e-mail is not legally binding.
"Interesting" example. 1. Using PostgreSQL is basically a client-server relationship,..so adOpenDynamic (updated cursors) is a bad choice. I recommend adOpenForwardOnly for fast one-way reading, and adOpenStatic to pull a client side recordset so that you can move forward and back. In either case declare the recordset Cursor to be client side (rs.CursorLocation = adUseClient). This also means no rs.AddNew and no rs.Refresh. Outside of MS Jet, I think of them as abominations. I have come to think of the connection between my app and the database as a potentially slow narrow pipe across a vast distance. Updateable cursors hold open the connection while I cursor up and down, always tying up more database side resources and network resources. I always send commands, and pull back recordsets. The only exception that makes sense is the browsing of mammoth datasets (millions of rows). How practical is your application if you're visually browsing millions of rows. 2. ADODB library version 2.1 is mildly ancient. I'm use to seeing 2.5 on older installations, and lately 2.6,2.7 and maybe a 2.8. At any rate, the latest is always a free download from the MSDN MDAC area (Microsoft Data Access Components). 3. Again this is a personal preference, but I always use connection.Execute for INSERTS,UPDATE, and DELETES. Your example used on AddNew and one cnn.Execute. 4. I find a object referencing style and stick with it. rs.Fields("fieldname") and rs!fieldname are both a little dated. rs("fieldname"), or rs(variable_holding_field_name) or rs(integer_field_ndx) seem to be cultural standards now. 5. I loathe to admit it, ADO.NET is also a much stronger tool for web/client apps for things like databinding. With it data grids are bound to disconnected recordsets, which execute discrete INSERTS, UPDATES, AND DELETE underneath,...again avoiding the updateable cursor. Oh, and PostgreSQL via ODBC,... it has never been strong on the updateable cursor/dynamic cursor thing. linuxgps wrote: > Hi all, > > I'm a beginner to MS Windows. > I began to to test VBA 6.0(SP6) with Postgresql 8.1 -with odbc- on > WIN2K(SP4). > For the test (accessing postgres db thru visual basic) I use the code, > given by the distro (psqlODBC HOWTO- Visual Basic). > The first problem I've encounted that the code in the given test snippet > is not full functioning: > "rs.Refresh" doesn't implemented ? > I use in the "Project Preferences" "Microsoft ActiveXData Objects 2.1 > library (msado21.tlb) > > I've installed some other MS stuff on the machine, and now the Postgres > database call makes a memory exception and crashes. > > Q 1.: Is this general, or some libraries are wrong on my system ? > Q 2.: Which MS tools are to control/update the msado-libraries > Q.3.: Which msado or similars are necessary to connect with visual basic > to postgres ? > > thank you in advance > testuser vba > > ----------------- > > Sub Main() > Dim cn as New ADODB.Connection > Dim rs as New ADODB.Recordset > > 'Open the connection > cn.Open "DSN=<MyDataSourceName>;" & _ > "UID=<MyUsername>;" & _ > "PWD=<MyPassword>;" & _ > "Database=<MyDatabaseName>" > > 'For updateable recordsets we would typically open a Dynamic recordset. > 'Forward Only recordsets are much faster but can only scroll forward > and 'are read only. Snapshot recordsets are read only, but scroll in > both 'directions. rs.Open "SELECT id, data FROM vbtest", cn, > adOpenDynamic > > 'Loop though the recordset and print the results > 'We will also update the accessed column, but this time access it > through 'the Fields collection. ISO-8601 formatted dates/times are the > safest IMHO. > While Not rs.EOF > Debug.Print rs!id & ": " & rs!data > rs.Fields("accessed") = Format(Now, "yyyy-MM-dd hh:mm:ss") > rs.Update > rs.MoveNext > Wend > > 'Add a new record to the recordset > rs.AddNew > rs!id = 76 > rs!data = 'More random data' > rs!accessed = Format(Now, "yyyy-MM-dd hh:mm:ss") > rs.Update > > 'Insert a new record into the table > cn.Execute "INSERT INTO vbtest (id, data) VALUES (23, 'Some random > data');" > > 'Refresh the recordset to get that last record... > rs.Refresh > > 'Get the record count > rs.MoveLast > rs.MoveFirst > MsgBox rs.RecordCount & " Records are in the recordset!" > > 'Cleanup > If rs.State <> adStateClosed Then rs.Close > Set rs = Nothing > If cn.State <> adStateClosed Then cn.Close > Set cn = Nothing > End Sub > > > > > ---------------------------(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
Attachment
Well Greg, you're right. Just the used code snippet is about 4 years old and was shipped with the distro. For beginners I think even a slow code is much better as having nothing. Have you any tutorial code using Postgres thru VBA with ADO.NET ? Campbell, Greg wrote: > "Interesting" example. > 1. Using PostgreSQL is basically a client-server relationship,..so > adOpenDynamic (updated cursors) is a bad choice. I recommend > adOpenForwardOnly for fast one-way reading, and adOpenStatic to pull a > client side recordset so that you can move forward and back. In either > case declare the recordset Cursor to be client side (rs.CursorLocation > = adUseClient). > > This also means no rs.AddNew and no rs.Refresh. > Outside of MS Jet, I think of them as abominations. > > I have come to think of the connection between my app and the database > as a potentially slow narrow pipe across a vast distance. Updateable > cursors hold open the connection while I cursor up and down, always > tying up more database side resources and network resources. I always > send commands, and pull back recordsets. The only exception that makes > sense is the browsing of mammoth datasets (millions of rows). How > practical is your application if you're visually browsing millions of > rows. > > 2. ADODB library version 2.1 is mildly ancient. I'm use to seeing 2.5 > on older installations, and lately 2.6,2.7 and maybe a 2.8. At any > rate, the latest is always a free download from the MSDN MDAC area > (Microsoft Data Access Components). > > 3. Again this is a personal preference, but I always use > connection.Execute for INSERTS,UPDATE, and DELETES. Your example used > on AddNew and one cnn.Execute. > > 4. I find a object referencing style and stick with it. > rs.Fields("fieldname") and rs!fieldname are both a little dated. > rs("fieldname"), or rs(variable_holding_field_name) or > rs(integer_field_ndx) seem to be cultural standards now. > > 5. I loathe to admit it, ADO.NET is also a much stronger tool for > web/client apps for things like databinding. With it data grids are > bound to disconnected recordsets, which execute discrete INSERTS, > UPDATES, AND DELETE underneath,...again avoiding the updateable cursor. > > Oh, and PostgreSQL via ODBC,... > it has never been strong on the updateable cursor/dynamic cursor thing. > > > > linuxgps wrote: > >> Hi all, >> >> I'm a beginner to MS Windows. >> I began to to test VBA 6.0(SP6) with Postgresql 8.1 -with odbc- on >> WIN2K(SP4). >> For the test (accessing postgres db thru visual basic) I use the >> code, given by the distro (psqlODBC HOWTO- Visual Basic). >> The first problem I've encounted that the code in the given test >> snippet is not full functioning: >> "rs.Refresh" doesn't implemented ? >> I use in the "Project Preferences" "Microsoft ActiveXData Objects 2.1 >> library (msado21.tlb) >> >> I've installed some other MS stuff on the machine, and now the >> Postgres database call makes a memory exception and crashes. >> >> Q 1.: Is this general, or some libraries are wrong on my system ? >> Q 2.: Which MS tools are to control/update the msado-libraries >> Q.3.: Which msado or similars are necessary to connect with visual >> basic to postgres ? >> >> thank you in advance >> testuser vba >> >> ----------------- >> >> Sub Main() >> Dim cn as New ADODB.Connection >> Dim rs as New ADODB.Recordset >> >> 'Open the connection >> cn.Open "DSN=<MyDataSourceName>;" & _ >> "UID=<MyUsername>;" & _ >> "PWD=<MyPassword>;" & _ >> "Database=<MyDatabaseName>" >> >> 'For updateable recordsets we would typically open a Dynamic recordset. >> 'Forward Only recordsets are much faster but can only scroll forward >> and 'are read only. Snapshot recordsets are read only, but scroll in >> both 'directions. rs.Open "SELECT id, data FROM vbtest", cn, >> adOpenDynamic >> >> 'Loop though the recordset and print the results >> 'We will also update the accessed column, but this time access it >> through 'the Fields collection. ISO-8601 formatted dates/times are >> the safest IMHO. >> While Not rs.EOF >> Debug.Print rs!id & ": " & rs!data >> rs.Fields("accessed") = Format(Now, "yyyy-MM-dd hh:mm:ss") >> rs.Update >> rs.MoveNext >> Wend >> >> 'Add a new record to the recordset >> rs.AddNew >> rs!id = 76 >> rs!data = 'More random data' >> rs!accessed = Format(Now, "yyyy-MM-dd hh:mm:ss") >> rs.Update >> >> 'Insert a new record into the table >> cn.Execute "INSERT INTO vbtest (id, data) VALUES (23, 'Some random >> data');" >> >> 'Refresh the recordset to get that last record... >> rs.Refresh >> >> 'Get the record count >> rs.MoveLast >> rs.MoveFirst >> MsgBox rs.RecordCount & " Records are in the recordset!" >> >> 'Cleanup >> If rs.State <> adStateClosed Then rs.Close >> Set rs = Nothing >> If cn.State <> adStateClosed Then cn.Close >> Set cn = Nothing >> End Sub >> >> >> >> >> ---------------------------(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 > >---------------------------(end of broadcast)--------------------------- >TIP 6: explain analyze is your friend > >
For ADO.NET I am using Npgsql, which you can get from the affiliated project site -- the Npgsql project. It is just like using the .NET SQL server, and Oledb libraries from the MSDN. The project site has documentation with examples on how to use Npgsql. I thinks there stuff in the GBorg and the pgfoundry site. I works for me. (except for Parameterized stored procedures using an actual Parameters collection,...maybe it's just me.) linuxgps wrote: > > Well Greg, you're right. > Just the used code snippet is about 4 years old and was shipped with the > distro. > For beginners I think even a slow code is much better as having nothing. > Have you any tutorial code using Postgres thru VBA with ADO.NET ? > > Campbell, Greg wrote: > >> "Interesting" example. >> 1. Using PostgreSQL is basically a client-server relationship,..so >> adOpenDynamic (updated cursors) is a bad choice. I recommend >> adOpenForwardOnly for fast one-way reading, and adOpenStatic to pull a >> client side recordset so that you can move forward and back. In either >> case declare the recordset Cursor to be client side (rs.CursorLocation >> = adUseClient). >> >> This also means no rs.AddNew and no rs.Refresh. >> Outside of MS Jet, I think of them as abominations. >> >> I have come to think of the connection between my app and the database >> as a potentially slow narrow pipe across a vast distance. Updateable >> cursors hold open the connection while I cursor up and down, always >> tying up more database side resources and network resources. I always >> send commands, and pull back recordsets. The only exception that makes >> sense is the browsing of mammoth datasets (millions of rows). How >> practical is your application if you're visually browsing millions of >> rows. >> >> 2. ADODB library version 2.1 is mildly ancient. I'm use to seeing 2.5 >> on older installations, and lately 2.6,2.7 and maybe a 2.8. At any >> rate, the latest is always a free download from the MSDN MDAC area >> (Microsoft Data Access Components). >> >> 3. Again this is a personal preference, but I always use >> connection.Execute for INSERTS,UPDATE, and DELETES. Your example used >> on AddNew and one cnn.Execute. >> >> 4. I find a object referencing style and stick with it. >> rs.Fields("fieldname") and rs!fieldname are both a little dated. >> rs("fieldname"), or rs(variable_holding_field_name) or >> rs(integer_field_ndx) seem to be cultural standards now. >> >> 5. I loathe to admit it, ADO.NET is also a much stronger tool for >> web/client apps for things like databinding. With it data grids are >> bound to disconnected recordsets, which execute discrete INSERTS, >> UPDATES, AND DELETE underneath,...again avoiding the updateable cursor. >> >> Oh, and PostgreSQL via ODBC,... >> it has never been strong on the updateable cursor/dynamic cursor thing. >> >> >> >> linuxgps wrote: >> >>> Hi all, >>> >>> I'm a beginner to MS Windows. >>> I began to to test VBA 6.0(SP6) with Postgresql 8.1 -with odbc- on >>> WIN2K(SP4). >>> For the test (accessing postgres db thru visual basic) I use the >>> code, given by the distro (psqlODBC HOWTO- Visual Basic). >>> The first problem I've encounted that the code in the given test >>> snippet is not full functioning: >>> "rs.Refresh" doesn't implemented ? >>> I use in the "Project Preferences" "Microsoft ActiveXData Objects 2.1 >>> library (msado21.tlb) >>> >>> I've installed some other MS stuff on the machine, and now the >>> Postgres database call makes a memory exception and crashes. >>> >>> Q 1.: Is this general, or some libraries are wrong on my system ? >>> Q 2.: Which MS tools are to control/update the msado-libraries >>> Q.3.: Which msado or similars are necessary to connect with visual >>> basic to postgres ? >>> >>> thank you in advance >>> testuser vba >>> >>> ----------------- >>> >>> Sub Main() >>> Dim cn as New ADODB.Connection >>> Dim rs as New ADODB.Recordset >>> >>> 'Open the connection >>> cn.Open "DSN=<MyDataSourceName>;" & _ >>> "UID=<MyUsername>;" & _ >>> "PWD=<MyPassword>;" & _ >>> "Database=<MyDatabaseName>" >>> >>> 'For updateable recordsets we would typically open a Dynamic recordset. >>> 'Forward Only recordsets are much faster but can only scroll forward >>> and 'are read only. Snapshot recordsets are read only, but scroll in >>> both 'directions. rs.Open "SELECT id, data FROM vbtest", cn, >>> adOpenDynamic >>> >>> 'Loop though the recordset and print the results >>> 'We will also update the accessed column, but this time access it >>> through 'the Fields collection. ISO-8601 formatted dates/times are >>> the safest IMHO. >>> While Not rs.EOF >>> Debug.Print rs!id & ": " & rs!data >>> rs.Fields("accessed") = Format(Now, "yyyy-MM-dd hh:mm:ss") >>> rs.Update >>> rs.MoveNext >>> Wend >>> >>> 'Add a new record to the recordset >>> rs.AddNew >>> rs!id = 76 >>> rs!data = 'More random data' >>> rs!accessed = Format(Now, "yyyy-MM-dd hh:mm:ss") >>> rs.Update >>> >>> 'Insert a new record into the table >>> cn.Execute "INSERT INTO vbtest (id, data) VALUES (23, 'Some random >>> data');" >>> >>> 'Refresh the recordset to get that last record... >>> rs.Refresh >>> >>> 'Get the record count >>> rs.MoveLast >>> rs.MoveFirst >>> MsgBox rs.RecordCount & " Records are in the recordset!" >>> >>> 'Cleanup >>> If rs.State <> adStateClosed Then rs.Close >>> Set rs = Nothing >>> If cn.State <> adStateClosed Then cn.Close >>> Set cn = Nothing >>> End Sub >>> >>> >>> >>> >>> ---------------------------(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 >> >> >> ---------------------------(end of broadcast)--------------------------- >> TIP 6: explain analyze is your friend >> >> > > > ---------------------------(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