else
{
ret = SQL_ERROR;
- SC_set_error(stmt, STMT_EXEC_ERROR, "Unfortunatley couldn't get this paramater's info", func);
+ SC_set_error(stmt, STMT_EXEC_ERROR, "Unfortunately couldn't get this paramater's info", func);
goto cleanup;
}
}
[ --disable-pthreads do not build with POSIX threads],
[AC_DEFINE(POSIX_MULTITHREAD_SUPPORT, 1,
[Define to 1 to build with pthreads support (--enable-pthreads)])
- AC_DEFINE(_REENTRANT, 1, [Define _REENTRANT for several plaforms])])
+ AC_DEFINE(_REENTRANT, 1, [Define _REENTRANT for several platforms])])
#
CC_set_error(conn, CONN_NO_MEMORY_ERROR, NULL, __FUNCTION__);
break;
case PORES_BAD_RESPONSE:
- CC_set_error(conn, CONNECTION_COMMUNICATION_ERROR, "communication error occured", __FUNCTION__);
+ CC_set_error(conn, CONNECTION_COMMUNICATION_ERROR, "communication error occurred", __FUNCTION__);
break;
default:
CC_set_error(conn, CONN_EXEC_ERROR, QR_get_message(res), __FUNCTION__);
/*
* In case the round trip time can be ignored, the query
- * and the appeneded query would be issued separately.
+ * and the appended query would be issued separately.
* Otherwise a multiple command query would be issued.
*/
if (appendq && ignore_roundtrip_time)
case PGRES_FATAL_ERROR:
handle_pgres_error(self, pgres, "send_query", res, TRUE);
- /* We should report that an error occured. Zoltan */
+ /* We should report that an error occurred. Zoltan */
aborted = TRUE;
query_completed = TRUE;
Int2 num_discardp;
char **discardp;
int num_descs;
- SQLUINTEGER default_isolation; /* server's default isolation initially unkown */
+ SQLUINTEGER default_isolation; /* server's default isolation initially unknown */
DescriptorClass **descs;
pgNAME schemaIns;
pgNAME tableIns;
#ifdef UNICODE_SUPPORT
if (0 == bytea_process_kind)
{
- if (get_convtype() > 0) /* coversion between the current locale is available */
+ if (get_convtype() > 0) /* conversion between the current locale is available */
{
BOOL wcs_debug = conn->connInfo.wcs_debug;
BOOL same_encoding = (conn->ccsc == pg_CS_code(conn->locale_encoding));
/*--------------------------------------------------------------------
* Functions/Macros to get rid of query size limit.
*
- * I always used the follwoing macros to convert from
+ * I always used the following macros to convert from
* old_statement to new_statement. Please improve it
* if you have a better way. Hiroshi 2001/05/22
*--------------------------------------------------------------------
{
case ReturnZeroLengthString:
if (qb->stmt)
- SC_set_error(qb->stmt, STMT_ERROR_IN_ROW, "conversion error to wide chars occured", __FUNCTION__);
+ SC_set_error(qb->stmt, STMT_ERROR_IN_ROW, "conversion error to wide chars occurred", __FUNCTION__);
return TRUE;
default:
qb->errornumber = STMT_EXEC_ERROR;
ivstruct = (SQL_INTERVAL_STRUCT *) buffer;
/* Convert input C type to a neutral format */
#ifdef UNICODE_SUPPORT
- if (get_convtype() > 0) /* coversion between the current locale is available */
+ if (get_convtype() > 0) /* conversion between the current locale is available */
{
BOOL wcs_debug = conn->connInfo.wcs_debug;
BOOL is_utf8 = (UTF8 == conn->ccsc);
/*
* Remove braces if the input value is enclosed by braces({}).
- * Othewise decode the input value.
+ * Otherwise decode the input value.
*/
static pgNAME
decode_or_remove_braces(const char *in)
*proc = NULL;
if (hmodule = LoadLibraryEx(GetXaLibPath(), NULL, LOAD_WITH_ALTERED_SEARCH_PATH), NULL != hmodule)
{
-MYLOG(0, "GetProcAddres for %s\n", procname);
+MYLOG(0, "GetProcAddress for %s\n", procname);
*proc = GetProcAddress(hmodule, procname);
}
columns!<br /> </li>
<li><b>Cache Size:</b>When using
-cursors, this is the row size of the tuple cache and the defualt is 100 rows.
+cursors, this is the row size of the tuple cache and the default is 100 rows.
If not using cursors, this has no meaning.<br /> </li>
<li><b>Max LongVarChar:</b> The maximum
<pre>
[7.3.0261]
-1.Handle the converion from text-like field to SQL_C_BINARY more properly.
+1.Handle the conversion from text-like field to SQL_C_BINARY more properly.
2.Make buffer extension in SQLPutData more effective.
3.Reply SQL_CONVERT_xxxx correctly for SQLGetInfo request.
4.Reply DBMS_NAME, DBMS_VERSION correctly for SQLGetInfo request.
6.Change adjustLikePattern() to take literal quote(') into account.
7.Fix a bug in memory debug routine.
8.Change the multibyte encoding list to match that of the current
- offical driver.
+ official driver.
9.Change SC_clear_error() to call CC_clear_error() also.
10.Change the length values returned when they are unknown for
SQLDescribeCol or SQLColAttribute requests.
of parameters.
4.Allow blanks in password.
5.Add an option to force abbreviation of connection string.
-6.Fix the handling of "PROTOCOL=x.x-x" in the connction string.
+6.Fix the handling of "PROTOCOL=x.x-x" in the connection string.
7.Fix the loadlib module of *nix.
[7.3.0260]
<li>Notes: psqlODBC 08.01.0107</li><br>
1) fix next problem with calling implicit rollback in bad time<br>
2) detecting transaction commands into if branch which mean backend
- successfuly done the command. add support for "start transaction"<br>
+ successfully done the command. add support for "start transaction"<br>
3) fix bug when mylog output can't be created<br>
4) fix problem with SQLSetPos<br>
5) fix problem with column length in CC_mapping<br>
<br>
<li>Notes: psqlODBC 08.01.0106</li><br>
1) fix problem with getting long text in unicode driver<br>
-2) fix sqlstate iin case of error in statement<br>
+2) fix sqlstate in case of error in statement<br>
3) doesn't call rollback in autocommit off or in manual transaction<br>
4) remove obsolete parameter protocol<br>
<br>
8. Avoid those notorious core dumps when logging on hitting<br>
"null" data...<br>
<8: thanls to Hartmut Raschick><br>
-9. Removed a static varible for thread-safety.<br>
+9. Removed a static variable for thread-safety.<br>
10. Improve the performance of keyset-driven fetch operation.<br>
11. Map (var)char type to SQL type more properly.<br>
-12. Change create_params for NUMERIC type to (precison, scale).<br>
+12. Change create_params for NUMERIC type to (precision, scale).<br>
13. Add type cast to remove some compiler warnings. <br>
<br>
1.30 by hinoue <br>
Diffs ignoring whitespace to version 1.23 (long / unified) <br>
1) Correct the return info for SQLGetInfo(.., SQL_CURSOR_COMMIT<br>
(ROLLBACK)_BEHAVIOR) call.<br>
-2) Explictly reject the SQLBrowseConnect call. <br>
+2) Explicitly reject the SQLBrowseConnect call. <br>
<br>
1.23 by hinoue <br>
Mon Sep 15 04:25:03 2003 (8 weeks ago)<br>
Changed since 1.18: +3 -3 [Select for Diff] <br>
Diffs to version 1.18 (long / unified) <br>
Diffs ignoring whitespace to version 1.18 (long / unified) <br>
- Improve SQLGetDiagField so that an MFC appliaction reports<br>
+ Improve SQLGetDiagField so that an MFC application reports<br>
error messages properly(bug report from Silvio Scarpati). <br>
<br>
1.18 by hinoue <br>
Changed since 1.12: +3 -3 [Select for Diff] <br>
Diffs to version 1.12 (long / unified) <br>
Diffs ignoring whitespace to version 1.12 (long / unified) <br>
- 1) Corrent the handling of bookmark in SQLBulkOperations.<br>
+ 1) Correct the handling of bookmark in SQLBulkOperations.<br>
2) Correct the calculation of a global index in SC_pos_add.<br>
3) Cleanup global/rowset/resultset index handling a little. <br>
<br>
<li>Fix a bug that SQLGetDiagField(SQL_DIAG_NUMBER) with SQL_HANDLE_DBC returns SQL_NO_DATA even if an error record exists.</li>
<li>Fix a typo "RECISION" which should be "PRECISION".</li>
<li>Enable SQLColumnPrivileges functionality.</li>
-<li>Currenly SQLColumnPrivileges() call fails. Fix a typo which is the cause.</li>
+<li>Currently SQLColumnPrivileges() call fails. Fix a typo which is the cause.</li>
<li>Fix a bug that SQLColAttribute returns wrong column name.</li>
</ol>
<h2><a id="13.02.0000">psqlODBC 13.02.0000 Release</a></h2>
If SQL_ATTR_CURSOR_TYPE of an statement is SQL_CURSOR_FORWARD_ONLY, SQL_ATTR_CONCURRENCY is SQL_CONCUR_READ_ONLY and extended protocol isn't used, the batch execution of the statement is possible.
A new option Batch Size was introduced for such cases.<br />
Batch Size: Split an array (of parameters) into chunks of Batch Size to execute statements. The last chunk may contain less than Batch Size elements. Setting 1 to this option forces the current one by one execution.<br />
-Also turn off use_server_side_prepare option temporarily when batch executuion is possible.
+Also turn off use_server_side_prepare option temporarily when batch execution is possible.
<li>Change SC_execute() so that it returns a return code which is not
affetced by the preceding results. It's necessary for batch execution
with arrays of parameters.</li>
<li>Add a new option IgnoreTimeout.</li>
Some tools issue issue SQLSetStmtAttr(.., SQL_ATTR_QUERY_TIMEOUT,,) internally and sometimes it's difficult for users to change the timeout value. You can disable the timeout by turning on this option.
-<li>An improvement for psqlodbc developpers. </li>
+<li>An improvement for psqlodbc developers. </li>
Make it possible to call some shell scripts from other directories.
</ol>
<h2><a id="12.01.0000">psqlODBC 12.01.0000 Release</a></h2>
<li>Remove tests for abstime type because the type was removed in PG12.</li>
<li>Update results for PG12's new floating point output format.</li>
</ol>
-<li>Fix the bug that causes Error : A parameter cannot be found that matches parameter name\81ene'.</li>
+<li>Fix the bug that causes Error : A parameter cannot be found that matches parameter name�ene'.</li>
<ol type="a">
<li>Check BuildResult(the result of drivers build) before building installers.</li>
<li>Enclose the command part * Find_VSDir $vc_ver * with parentheses so that
<li>Remove connSettings option and/or pqopt option from the OutConnectionString parameter of SQLDriverConnect() when each option doesn't exist in InConnectionString parameter.</li>
<li>The parameters should be cast because parameters of concat() function are variadic "any".</li>
<li>Unbuffered-IO in Windows is incredibly slow. Instead call fflush() after fprintf().</li>
-<li>Add an alias DX of *Database* keyword for connection strings to aviod the use of "database" keyword which has a special meaning in some apps or middlewares.</li>
+<li>Add an alias DX of *Database* keyword for connection strings to avoid the use of "database" keyword which has a special meaning in some apps or middlewares.</li>
<li>numeric items without precision are unlimited and there's no natural map between SQL Data types.</li>
Add an option *Numeric(without precision) as*.
<li>Fix a bug that SQLSpecialColumns() returns oid/xmin incorrectly when a table does not exist.</li>
Per report from Ayman Samamry.
<li>Fix SQLGetTypeInfo() so that it filters SQL_TYPE_DATE, SQL_TYPE_TIME or SQL_TYPE_TIMESTAMP for ODBC 2.x applications.</li>
Per report from Oleg Tonkikh.
-<li>Revise ConfigDSN() so that it handles the 4th parameter(lpszAttribues) correctly.</li>
+<li>Revise ConfigDSN() so that it handles the 4th parameter(lpszAttributes) correctly.</li>
Per report from Haribabu Kommi.
<li>Fix a crash bug when handling error messages.
Also modified some error messages.</li>
<li>Fix multibyte handling of ansi driver.</li>
<li>Handle PG 10 identity columns.</li>
<li>For PG10 servers, we will never see "unknown" output columns.</li>
-<li>Improve @@identty handling.</li>
+<li>Improve @@identity handling.</li>
Use multibyte-aware eatTableIdentifiers() instead of next_name_token().<br />
Use identifierEscape() to escape single quotes or double quotes.
<li>PG_PRINTF_ATTRIBUTE instead of printf in __attribute__((format(printf, .., ..))) function attribute.</li>
<li>Add __FILE__, __FUNCTION__, __LINE__ to MYLOG.</li>
<li>Fix an parameter unmatch error which would cause a crash.</li>
<li>Removed some qlogs, changed some qlogs to MYLOG and added some qlogs.</li>
-<li>Move the implemetation of GetExeName() from psqlodbc.c(psqlsetup.c) to mylog.c.</li>
+<li>Move the implementation of GetExeName() from psqlodbc.c(psqlsetup.c) to mylog.c.</li>
<li>Remove the GssAuthUseGssapi option completely.</li>
<li>Fix bug that calls strdup() for NULL pointers.</li>
Per report from Ding, Haiqiang.
<h2><a id="09.06.0410">psqlODBC 09.06.0410 Release</a></h2>
Changes:<br />
<ol type="1">
-<li>Fix buffer truncations. The truncations occured when concatenating 'RELEASE xxxx...;' and 'SAVEPOINT xxxx....'.</li>
+<li>Fix buffer truncations. The truncations occurred when concatenating 'RELEASE xxxx...;' and 'SAVEPOINT xxxx....'.</li>
Per reported by Pavel Raiskup.
<li>Correct the behavior of snprintfcat() on Windows using posix_vsnprintf() instead of _vsnprintf().</li>
<li>Handle StrLen_or_IndPtr argument of SQLBindParameter() properly when StrLen_or_IndPtr doesn't point to SQL_NTS and conversions between SQLWCHAR and SQLCHAR occur.</li>
<ol type="1">
<li><b>Fix a crash bug when connecting from MSACCESS(Microsoft Jet)</b><br /></li>
Per reported by Robert Ball.<br />
-This occurs when MSACCESS(Jet) calls SQLConnectAttr(.., 30002, ..) => ucs2_to_utf8() and about to call mylog() with a NULL derefernced pointer parameter.
+This occurs when MSACCESS(Jet) calls SQLConnectAttr(.., 30002, ..) => ucs2_to_utf8() and about to call mylog() with a NULL dereferenced pointer parameter.
</ol>
<h2><a id="09.06.0300">psqlODBC 09.06.0300 Release</a></h2>
Changes:<br />
<li><b>Enable SQLBulkOperations in declare/fetch mode using long (>=12bytes) bookmarks.</b><br /></li>
Formerly the driver offered very simple bookmark support -- it is just
the current row number. Now the driver offers more verbose bookmarks which
-contain KeySet informations (CTID (+ OID)). Though they consume 12bytes
+contain KeySet information (CTID (+ OID)). Though they consume 12bytes
(row number + CTID) or 16bytes (row number + CTID + OID), they are useful
in declare/fetch mode.
<li><b>a hack to handle boolean items in VBA with MS Access.</b><br /></li>
<li><b>Ignore the difference between CR LF, LF and CR line break when comparing expected and result output.</b><br /></li>
<li><b>Prior to Visual Studio 2015 Update 3, the hook functions of type PfnDliHook __pfnDliNotifyHook2 and __pfnDliFailureHook2 were non-const.</b><br /></li>
They were made const to improve security (global, writable function pointers are bad). If for backwards compatibility you require the hooks to be writable, define the macro DELAYIMP_INSECURE_WRITABLE_HOOKS prior to including this header and provide your own non-const definition of the hooks.<br />
-The following infomation is from Dave Cramer(davecramer@gmail.com).
+The following information is from Dave Cramer(davecramer@gmail.com).
<li><b>Fix a regression test some failures.</b><br /></li>
</ol>
<h2><a id="09.05.0300">psqlODBC 09.05.0300 Release</a></h2>
<li>Unify midtemp and moneytemp.<br /></li>
<li>Variable wconverted is no longer needed.<br /></li>
<li>Pre_convert for PG_TYPE_BOOL is not needed.<br /></li>
- <li>It's better to take the same road even in case of pre_convet.<br /></li>
+ <li>It's better to take the same road even in case of pre_convert.<br /></li>
</ol>
<li><b>Fixed possible once to build test suite in a different place other than the source code is, it's not now.</b><br /></li>
Also add a prototype for ResolveNumericParam for readability.
<li><b>Increase digits used to convert from REAL/DOUBLEs to strings so that the reverse conversions can recover original values.</b><br /></li>
Patch originally by John Smith.
-<li><b>Clear errors for prepared statement for subsequent exections.</b><br /></li>
+<li><b>Clear errors for prepared statement for subsequent executions.</b><br /></li>
<li><b>Fix the problems using SQLFetch on prepared INSERT with RETURNING clause.</b><br /></li>
reported by John Smith.
<li><b>Fix use of server-queried version before connection.</b><br /></li>
<li>Improve the logging.<br /></li>
</ol>
<li><b>Fix the regkey search bug when XARMcreate() causes an error at enlistmentvin DTC.</b><br /></li>
-<li><b>Additonal improvement on MSDTC enlistment.</b><br /></li>
+<li><b>Additional improvement on MSDTC enlistment.</b><br /></li>
Unfortunately the current pgxalib.dll can't recover transactions which use sslmode verify-[ca|full] or whose authentication is SSPI, certificate or ident.
When MSDTC.exe tries to connect to PostgreSQL it does so under Windows user NETWORKSERVICE, which won't match the username the original user connected
to PostgreSQL as. So PostgreSQL will reject the connection.
<h2><a id="09.03.0210">psqlODBC 09.03.0210 Release</a></h2>
Changes:<br />
<ol type="1">
-<li><b>SSL verify[-(ca|full)] is avaiable since 8.4.</b><br /></li>
-There seems no need to check it. Also there's no need to call lt_dlopen currentl
-y.<br />
+<li><b>SSL verify[-(ca|full)] is available since 8.4.</b><br /></li>
+There seems no need to check it. Also there's no need to call lt_dlopen currently.<br />
<li><b>Update EXTRA_DIST in Makefile.am</b><br /></li>
Files for the new lfconversion test case were missing.<br />
<li><b>Fix locking in SC_set_prepared</b><br /></li>
added ENTER/LEAVE_CRIT_CS calls in SC_set_prepared.<br />
<li><b>Add test case for CTE queries (WITH ...)</b><br /></li>
None of the existing test cases covered that. This test case gives a different e
-rror message than the original one, but it'sthe same underlying issue.<br />
+rror message than the original one, but it's the same underlying issue.<br />
<li><b>Silence compiler warning.</b><br /></li>
SQLGUID format and conn_settings cannot be NULL.<br />
This fixed by Michael Paquier.<br />
<li><b>The driver takes SQL_C_LONG to mean SQLINTEGER rather than "long".</b><br /></li>
The regression test was failing on the s390x architecture because of that.<br />
It's big-endian, with sizeof(long) == 8.<br />
-<li><b>Revert "When LF->CR+LF conversion causes an buffer truncation, supress the conversion (in case of unicode)."</b><br /></li>
+<li><b>Revert "When LF->CR+LF conversion causes an buffer truncation, suppress the conversion (in case of unicode)."</b><br /></li>
<li><b>Refactor utf8_to_ucs_lf.</b><br /></li>
A macro is difficult to debug, so turn it into a regular function.<br />
Also, add a new test case for LF->CR+LF conversion, to test the bug that Nils Go"sche reported (which was already fixed).<br />
<li><b> Change SQL_ATTR_PARAMS_PROCESSED_PTR attribute which is set by SQLSetStmtAttr() from (SQLUINTEGER *) to (SQLULEN *).</b><br /></li>
This fixes the bug reported by Christopf Berg. <br />
Also verify similar attributes which were changed from SQL(U)INTEGER (*) to SQL(U)LEN (*) when 64bit ODBC was introduced.<br />
-<li><b> Reduce the memory usage of ConnectinClass objects by changing their large fixed length text fields to variable ones.</b><br /></li>
+<li><b> Reduce the memory usage of ConnectionClass objects by changing their large fixed length text fields to variable ones.</b><br /></li>
Because changes are applied to percent-encoded fields this time, password field is also a target of this.<br />
<li><b> Revise MSDTC support.</b><br /></li>
Remove pointlessly complicated AsyncThreads stuff. Instead use _beginthread() to clean up threads.<br />
Make pgenlist.dll from the structure change of ConnectionClass.<br />
The driver dlls exports the functions described in connexp.h which are used by pgenlist.dll.<br />
Isolate the current communication path if necessary.<br />
- While an IAsyncPG object is alive, a ConnectionClass object (hereinafter refered to as conn-obj) is assigned to it. <br />
+ While an IAsyncPG object is alive, a ConnectionClass object (hereinafter referred to as conn-obj) is assigned to it. <br />
The assignment has to be changed in the following cases.<br />
<ol type="a">
<li> SQLDisconnect() is called for the current connection handle which is assigned to an IAsyncPG object.</li>
mode, the implicit BEGIN was ont sent. But without server-side prepares, it was. It seems best to send the implicit BEGIN in both cases, because then
you get a warning from the backend about the second BEGIN. That's a good thing, because a sane ODBC application should be using the ODBC function
SQLEndTran() for transaction control, not explicit BEGIN/COMMIT.<br />
-<li><b> When LF->CR+LF conversion causes an buffer truncation, supress the conversion (in case of unicode).</b><br /></li>
+<li><b> When LF->CR+LF conversion causes an buffer truncation, suppress the conversion (in case of unicode).</b><br /></li>
<li><b> Handle SSL client certificate authentication in Windows Schannel security support provider.</b><br /></li>
You have to place the certificate file postgresql.pfx (PFX or PKCS12 format)
in %APPDATA%\postgresql folder instead of postgresql.crt and postgresql.key
They were broken, did not compile. This fixed by Michael Paquier.<br />
<li><b>Add support for verify-ca/full sslmode using Windows Schannel Security Service Provider.</b><br /></li>
Root CAs must be installed into Windows Root certificate store beforehand.<br />
-<li><b> VOID is not defined on all systems. Use void insted.</b><br /></li>
+<li><b> VOID is not defined on all systems. Use void instead.</b><br /></li>
This fixed by Christoph Berg.<br />
<li><b> winres.h instead of afxres.h.</b><br /></li>
There are some cases (VS 2012 express etc) when afxres.h doesn't exist.<br />
<li><b> Use snprintf() instead of sprintf() for safety.</b><br /></li>
I believe these instances were in fact safe, because a cursor name has a maximum length.<br />
<li><b> bufferoverflowu.lib seems no longer needed in recent versions of VC environment.</b><br /></li>
-removed it from win64.mak. Speocify CUSTOMLINKLIBS=bufferoverflowu.lib from the command line when it is neccessary in old VC environment.<br />
+removed it from win64.mak. Speocify CUSTOMLINKLIBS=bufferoverflowu.lib from the command line when it is necessary in old VC environment.<br />
<li><b> Fix memset() call, meant to clear the whole struct.</b><br /></li>
Per compiler warning.(psqlodbc.c)<br />
<li><b> socket: speedup also ipv6 connection</b><br /></li>
4.) Revise the handling of decimal point.<br />
5.) Adjust the operations after closing eof-detected cursors.<br />
6.) Before dropping the statement, sync and discard the response from the server for the pending extended query.<br />
-7.) Clear col_info(columns info) cache ehen DROP/ALTER TABLE is called so that later SQLDescribeCol() etc work properly.<br />
+7.) Clear col_info(columns info) cache when DROP/ALTER TABLE is called so that later SQLDescribeCol() etc work properly.<br />
8.) Improve the handling of BYTEA type.<br />
9.) Don't clear the columns cache info when they are referenced.<br />
10.) Correct the column size of interval types.<br />
<br />
<h2><a id="09.00.0300">psqlODBC 09.00.0300</a></h2>
Changes:<br />
-1.) Don't propgate the connection level statment options to the internal statements. This fixes an infinite loop reported by Nelson Andre.<br />
+1.) Don't propgate the connection level statement options to the internal statements. This fixes an infinite loop reported by Nelson Andre.<br />
2.) Improved a mylog output.<br />
3.) Fix the bug introduced by the previous change reprted by Adrien de Croy.<br />
4.) Divide SC_returns_rows() macro into several categories and make SQLResultNumCols(), SQLDescribeCol() or SQLColAttribute() available <br />
<h2><a id="08.04.0100">psqlODBC 08.04.0100</a></h2>
Changes:<br />
1.) Avoid a crash on exit when using SSL connections by resetting CRTPTO_xx_callbacks before unloding libpq.<br />
-2.) Correct the funtion name DiscardRollbackState pointed out by Zoltan Boszormenyi.<br />
+2.) Correct the function name DiscardRollbackState pointed out by Zoltan Boszormenyi.<br />
3.) Correct the value of INDEX_QUALIFIER column which returned by SLQSTATISTICS();<br />
4.) Take domain types into account in SQLColumns() (Thanks to Luiz K. Matsumura).<br />
5.) Take RESTRICT actions into account in SQLForeignKeys() (report from Farid Zidan).<br />
6.) Fix a bug that small negative decimal values are mistaken for non-negative (bug report from Dominic Smith).<br />
7.) Use MSG_NOSIGNAL/MSG_NOSIGPIPE option on send()/recv() to avoid crash on SIGPIPE (bug report from Brian Feldman).<br />
8.) Remove a spurious "." with no trailing digits in timestamp representation (bug report from Brian Feldman).<br />
-9.) Rename trim() funtion in order to avoid conflict of function name(report from Dominic Smith).<br />
+9.) Rename trim() function in order to avoid conflict of function name(report from Dominic Smith).<br />
10.) Put back the change to add *read only* clause for read only cursors.<br />
11.) Improve pgtype_transfer_octet_length().<br />
12.) Fix a bug reported by Milen Manev that SQLExec *select for a table* -> SQLDescribeCol() -> add a column to the table -> SQLExec *select for the table* -> SQLDescribeCol() for the added column causes a bad result.<br />
<br />
<h2><a id="08.02.0300">psqlODBC 08.02.0300</a></h2>
Changes:<br />
-1.) Allow non-admin or Vista users to create log fils in the home
+1.) Allow non-admin or Vista users to create log files in the home
directory.<br />
2.) Fix an index over bug which causes a crash or an unexpected result.<br />
<br />
4.) Remove WSAStartup() and WSACleanup() from DllMain.<br />
5.) Load libpq from the driver's folder.<br />
6.) Use QR_get_value_backend_int/_text() funcs instead of QR_get_value_backend_row().<br />
-7.) Improve the implemetation of SQLSetPos(.., SQL_ADD/SQL_UPDATE) using the 8.2 new feature INSERT/UPDATE .. returning.<br />
+7.) Improve the implementation of SQLSetPos(.., SQL_ADD/SQL_UPDATE) using the 8.2 new feature INSERT/UPDATE .. returning.<br />
8.) Seaparate DTC code as a Delayload DLL.<br />
<br />
<h2><a id="08.02.0204">psqlODBC 08.02.0204</a></h2>
<h2><a id="08.02.0203">psqlODBC 08.02.0203</a></h2>
Changes:<br />
1) Fix a bug which forgets unnamed plans too early especially when handling large objects.<br />
-2) Don't treat charcters whose value >= 128 as alphanumeric in case of conversion of binary data to bytea.<br />
+2) Don't treat characters whose value >= 128 as alphanumeric in case of conversion of binary data to bytea.<br />
3) Change ConfigDSN() so that it takes the options in Setup Dialog page 1 into account.<br />
4) Simplify the memory management of statements'columns info so as to prevent memory leaks or a crash in parse_statement etc.<br />
5) SQLTables("", SQL_ALL_SCHEMAS. "", ..) now returns a list of valid schemas.<br />
<h2><a id="08.02.0102">psqlODBC 08.02.0102</a></h2>
Changes:<br />
1) Compensate a loss of report of being Jet when using MS Access.<br />
-2) Add NULL <-> "" date converion function for FOXPRO and<br />
+2) Add NULL <-> "" date conversion function for FOXPRO and<br />
revise parse/describe/execute mechanism.<br />
3) Miscellaneous type changes for 64 bit drivers.<br />
<br />
4) Improve the handling BIGINT type in the OSs without having strtoll().<br />
5) Support ODBC CONVERT scalar functions in some cases.<br />
6) Close qlog, mylog files on detach dll.<br />
-7) Improve comunication performance in case of the driver's original socket.<br />
+7) Improve communication performance in case of the driver's original socket.<br />
8) Fix send a close <br />
9) Support of IPV6.<br />
<br />
or you can use the same functionality from Command Prompt using Windows
helper batch at the parent folder (..\). See ..\readme_winbuild.txt.
- C:\psqlodbc\> (Commnd Prompt) .\BuildAll.bat <options>
+ C:\psqlodbc\> (Command Prompt) .\BuildAll.bat <options>
1. Please start a powershell console and set the ExecutionPolicy of
Powershell to RemoteSigned or Unrestricted.
Get-ExecutionPolicy
- When the ExectionPolicy is "Restricted" or "AllSigned" then type e.g.
+ When the ExecutionPolicy is "Restricted" or "AllSigned" then type e.g.
Set-ExecutionPolicy RemoteSigned
/*
* Values enclosed with braces({}) can contain ; etc
* We don't remove the braces here because
- * decode_or_remove_braces() in dlg_specifi.c
+ * decode_or_remove_braces() in dlg_specific.c
* would remove them later.
- * Just correct the misdetected delimter(;).
+ * Just correct the misdetected delimiter(;).
*/
switch (*value)
{
goto cleanup;
default:
- SC_set_error(self, STMT_INTERNAL_ERROR, "An Internal Error has occured -- Unknown statement status.", func);
+ SC_set_error(self, STMT_INTERNAL_ERROR, "An Internal Error has occurred -- Unknown statement status.", func);
retval = SQL_ERROR;
goto cleanup;
}
/*
* Supplies parameter data at execution time.
- * Used in conjuction with SQLPutData.
+ * Used in conjunction with SQLPutData.
*/
RETCODE SQL_API
PGAPI_ParamData(HSTMT hstmt,
while (SQL_SUCCEEDED(result))
{
- /* If only requesting unique indexs, then just return those. */
+ /* If only requesting unique indexes, then just return those. */
if (fUnique == SQL_INDEX_ALL ||
(fUnique == SQL_INDEX_UNIQUE && atoi(isunique)))
{
case 2:
/*
- * Simplified query to search old fashoned primary key
+ * Simplified query to search old fashioned primary key
*/
appendPQExpBuffer(&tables_query, "select ta.attname, ia.attnum, ic.relname, n.nspname, NULL"
" from pg_catalog.pg_attribute ta,"
QR_Destructor(res);
}
continueExec = (continueExec && !bError);
- /* restore the cleint encoding */
+ /* restore the client encoding */
SPRINTF_FIXED(query, "SET CLIENT_ENCODING TO '%s'", conn->original_client_encoding);
bError = (!QR_command_maybe_successful((res = CC_send_query(conn, query, NULL, flag, NULL))));
QR_Destructor(res);
#define ACLMAX 8
-#define ALL_PRIVILIGES "arwdRxt"
+#define ALL_PRIVILEGES "arwdRxt"
static int
usracl_auth(char *usracl, const char *auth)
{
owner = QR_get_value_backend_text(wres, i, 1);
schnm = QR_get_value_backend_text(wres, i, 3);
/* The owner has all privileges */
- useracl_upd(useracl, allures, owner, ALL_PRIVILIGES);
+ useracl_upd(useracl, allures, owner, ALL_PRIVILEGES);
for (j = 0; j < usercount; j++)
{
user = QR_get_value_backend_text(allures, j, 0);
sys = (strcmp(user, owner) == 0);
/* Super user has all privileges */
if (su)
- useracl_upd(useracl, allures, user, ALL_PRIVILIGES);
+ useracl_upd(useracl, allures, user, ALL_PRIVILEGES);
for (k = 0; k < ACLMAX; k++)
{
if (!useracl[j][k])
* 2:[CONN_CS] -- per psqlodbc connection lock
* This lock would be held for a pretty long time while accessing
* the psqlodbc connection assigned to an IAsyncPG object. You
- * can use the connecion safely by holding a ELOCK for the
+ * can use the connection safely by holding a ELOCK for the
* IAsyncPG object because the assignment is ensured to be
* fixed while the ELOCK is held.
*
else
{
retcode = -1;
- mylog("%s:SetValuEx ret=%d\n", __FUNCTION__, ret);
+ mylog("%s:SetValueEx ret=%d\n", __FUNCTION__, ret);
}
break;
default:
retcode = -1;
- mylog("%s:QueryValuEx ret=%d\n", __FUNCTION__, ret);
+ mylog("%s:QueryValueEx ret=%d\n", __FUNCTION__, ret);
break;
}
::RegCloseKey(sKey);
res = pDtc->QueryInterface(IID_IDtcToXaHelperSinglePipe, (void **) &pHelper);
if (res != S_OK || !pHelper)
{
- mylog("DtcToXaHelperSingelPipe get error %d\n", res);
+ mylog("DtcToXaHelperSinglePipe get error %d\n", res);
pHelper = NULL;
return SQL_ERROR;
}
-- Numeric Functions
-- +++++++++++++++++
--
--- Built-in: ABS, ACOS, ASIN, ATAN, ATAN2, COS, COT, DEGRESS, EXP,
+-- Built-in: ABS, ACOS, ASIN, ATAN, ATAN2, COS, COT, DEGREES, EXP,
-- FLOOR, MOD, PI, RADIANS, ROUND, SIGN, SIN, SQRT, TAN
-- Missing: LOG (ODBC sense)
}
else
{
- SC_set_error(stmt, STMT_SEQUENCE_ERROR, "Bookmark isn't specifed yet", func);
+ SC_set_error(stmt, STMT_SEQUENCE_ERROR, "Bookmark isn't specified yet", func);
ret = SQL_ERROR;
}
}
return ret;
}
-/* new fucntion */
+/* new function */
RETCODE SQL_API
SQLSetDescRec(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLSMALLINT Type,
return SQL_ERROR;
}
-/* new fucntion */
+/* new function */
RETCODE SQL_API
SQLSetDescRecW(SQLHDESC DescriptorHandle,
SQLSMALLINT RecNumber, SQLSMALLINT Type,
case SQL_DESC_NUM_PREC_RADIX:
default:ret = SQL_ERROR;
DC_set_error(desc, DESC_INVALID_DESCRIPTOR_IDENTIFIER,
- "invaid descriptor identifier");
+ "invalid descriptor identifier");
}
if (unbind)
opts->parameters[para_idx].buffer = NULL;
case SQL_DESC_LENGTH:
default:ret = SQL_ERROR;
DC_set_error(desc, DESC_INVALID_DESCRIPTOR_IDENTIFIER,
- "invalid descriptor identifer");
+ "invalid descriptor identifier");
}
switch (rettype)
{
#endif /* NOT_USED */
/*
- * corrsponds to "min_scale" in ODBC 2.x.
+ * corresponds to "min_scale" in ODBC 2.x.
*/
Int2
pgtype_min_decimal_digits(const ConnectionClass *conn, OID type)
}
/*
- * corrsponds to "max_scale" in ODBC 2.x.
+ * corresponds to "max_scale" in ODBC 2.x.
*/
Int2
pgtype_max_decimal_digits(const ConnectionClass *conn, OID type)
}
/*
- * corrsponds to "scale" in ODBC 2.x.
+ * corresponds to "scale" in ODBC 2.x.
*/
Int2
pgtype_decimal_digits(const StatementClass *stmt, OID type, int col)
/* These functions can use static numbers or result sets(col parameter) */
Int4 pgtype_column_size(const StatementClass *stmt, OID type, int col, int handle_unknown_size_as); /* corresponds to "precision" in ODBC 2.x */
-SQLSMALLINT pgtype_precision(const StatementClass *stmt, OID type, int col, int handle_unknown_size_as); /* "precsion in ODBC 3.x */
+SQLSMALLINT pgtype_precision(const StatementClass *stmt, OID type, int col, int handle_unknown_size_as); /* "precision in ODBC 3.x */
/* the following size/length are of Int4 due to PG restriction */
Int4 pgtype_display_size(const StatementClass *stmt, OID type, int col, int handle_unknown_size_as);
Int4 pgtype_buffer_length(const StatementClass *stmt, OID type, int col, int handle_unknown_size_as);
int initialize_global_cs(void);
enum { /* CC_conninfo_init option */
CLEANUP_FOR_REUSE = 1L /* reuse the info */
- ,INIT_GLOBALS = (1L << 1) /* init globals memebers */
+ ,INIT_GLOBALS = (1L << 1) /* init globals members */
};
void CC_conninfo_init(ConnInfo *conninfo, UInt4 option);
void CC_conninfo_release(ConnInfo *conninfo);
DLG_OPTIONS_DS3 DIALOG DISCARDABLE 0, 0, 306, 243
STYLE DS_MODALFRAME | DS_3DLOOK | DS_CENTER | WS_POPUP | WS_CAPTION |
WS_SYSMENU
-CAPTION "Adavanced Options(Datasource 3)"
+CAPTION "Advanced Options(Datasource 3)"
FONT 8, "MS Sans Serif"
BEGIN
PUSHBUTTON "Page 2",ID2NDPAGE,49,5,40,15
if (!QR_command_maybe_successful(res))
{
QR_Destructor(res);
- SC_set_error(stmt, STMT_EXEC_ERROR, "move error occured", __FUNCTION__);
+ SC_set_error(stmt, STMT_EXEC_ERROR, "move error occurred", __FUNCTION__);
return (-1);
}
moved = (-1);
if (!QR_command_maybe_successful(mres))
{
QR_Destructor(mres);
- SC_set_error(stmt, STMT_EXEC_ERROR, "move error occured", func);
+ SC_set_error(stmt, STMT_EXEC_ERROR, "move error occurred", func);
RETURN(-1)
}
moved = movement;
hidx = CacheIdx2GIdx(num_backend_rows, stmt, self);
lkidx = GIdx2KResIdx(lidx, stmt, self);
hkidx = GIdx2KResIdx(hidx, stmt, self);
- /* For simplicty, use CURS_NEEDS_REREAD bit to mark the row */
+ /* For simplicity, use CURS_NEEDS_REREAD bit to mark the row */
for (i = lkidx; i < hkidx; i++)
self->keyset[i].status |= CURS_NEEDS_REREAD;
/* deleted info */
/* Stuff for declare/fetch tuples */
SQLULEN num_total_read; /* the highest absolute position ever read in + 1 */
- SQLULEN count_backend_allocated;/* m(re)alloced count */
+ SQLULEN count_backend_allocated;/* m(re)allocated count */
SQLULEN num_cached_rows; /* count of tuples kept in backend_tuples member */
SQLLEN fetch_number; /* 0-based index to the tuple to read next */
SQLLEN cursTuple; /* absolute current position in the servr's cursor used to retrieve tuples from the DB */
char flags; /* this result contains keyset etc ? */
po_ind_t move_direction; /* must move before fetching this
result set */
- SQLULEN count_keyset_allocated; /* m(re)alloced count */
+ SQLULEN count_keyset_allocated; /* m(re)allocated count */
SQLULEN num_cached_keys; /* count of keys kept in backend_keys member */
KeySet *keyset;
SQLLEN key_base; /* relative position of rowset start in the current keyset cache */
This library is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTIBILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
p = pgtype_to_name(stmt, field_type, col_idx, fi && fi->auto_increment);
break;
- case SQL_COLUMN_UNSIGNED: /* == SQL_DESC_UNSINGED */
+ case SQL_COLUMN_UNSIGNED: /* == SQL_DESC_UNSIGNED */
value = pgtype_unsigned(conn, field_type);
if (value == -1) /* non-numeric becomes TRUE (ODBC Doc) */
value = SQL_TRUE;
break;
case COPY_INVALID_STRING_CONVERSION: /* invalid string */
- SC_set_error(stmt, STMT_STRING_CONVERSION_ERROR, "invalid string conversion occured.", func);
+ SC_set_error(stmt, STMT_STRING_CONVERSION_ERROR, "invalid string conversion occurred.", func);
result = SQL_ERROR;
break;
return SQL_NO_DATA_FOUND; \
}
-/* This fetchs a block of data (rowset). */
+/* This fetches a block of data (rowset). */
RETCODE SQL_API
PGAPI_ExtendedFetch(HSTMT hstmt,
SQLUSMALLINT fFetchType,
ret = SQL_NO_DATA_FOUND;
else
{
- SC_set_error(stmt, STMT_ROW_VERSION_CHANGED, "the driver cound't identify inserted rows", func);
+ SC_set_error(stmt, STMT_ROW_VERSION_CHANGED, "the driver could't identify inserted rows", func);
ret = SQL_ERROR;
}
/* stmt->currTuple = SC_get_rowset_start(stmt) + ridx; */
ret = SQL_ERROR;
goto cleanup;
}
- /* else if (ret != SQL_SUCCESS) this is unneccesary
+ /* else if (ret != SQL_SUCCESS) this is unnecessary
SC_error_copy(s.stmt, s.qstmt, TRUE); */
}
else
ret = SQL_ERROR;
goto cleanup;
}
- /* else if (ret != SQL_SUCCESS) this is unneccesary
+ /* else if (ret != SQL_SUCCESS) this is unnecessary
SC_error_copy(s.stmt, s.qstmt, TRUE); */
}
else
MYLOG(0, "entering fConcurrency=%d crowKeyset=" FORMAT_LEN " crowRowset=%d\n",
fConcurrency, crowKeyset, crowRowset);
- SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, "SetScroll option not implemeted", func);
+ SC_set_error(stmt, STMT_NOT_IMPLEMENTED_ERROR, "SetScroll option not implemented", func);
return SQL_ERROR;
}
break;
default:
- SC_set_error(self, STMT_INTERNAL_ERROR, "An internal error occured while recycling statements", func);
+ SC_set_error(self, STMT_INTERNAL_ERROR, "An internal error occurred while recycling statements", func);
return FALSE;
}
break;
case COPY_INVALID_STRING_CONVERSION: /* invalid string */
- SC_set_error(self, STMT_STRING_CONVERSION_ERROR, "invalid string conversion occured.", func);
+ SC_set_error(self, STMT_STRING_CONVERSION_ERROR, "invalid string conversion occurred.", func);
result = SQL_ERROR;
break;
if (!SC_SetExecuting(self, TRUE))
{
- SC_set_error(self, STMT_OPERATION_CANCELLED, "Cancel Reuest Accepted", func);
+ SC_set_error(self, STMT_OPERATION_CANCELLED, "Cancel Request Accepted", func);
goto cleanup;
}
conn->status = CONN_EXECUTING;
{
/*
* We shouldn't send COMMIT. Postgres backend does the autocommit
- * if neccessary. (Zoltan, 04/26/2000)
+ * if necessary. (Zoltan, 04/26/2000)
*/
/*
SC_set_error_if_not_set(self, STMT_NO_MEMORY_ERROR, "memory allocation error???", __FUNCTION__);
break;
case PORES_BAD_RESPONSE:
- SC_set_error_if_not_set(self, STMT_COMMUNICATION_ERROR, "communication error occured", __FUNCTION__);
+ SC_set_error_if_not_set(self, STMT_COMMUNICATION_ERROR, "communication error occurred", __FUNCTION__);
break;
case PORES_INTERNAL_ERROR:
SC_set_error_if_not_set(self, STMT_INTERNAL_ERROR, "Internal error fetching next row", __FUNCTION__);