Tom Lane [Fri, 16 Feb 2001 03:26:40 +0000 (03:26 +0000)]
Fix bugs in pltcl's new return_null command: it was liable to go belly up
if the return datatype's input converter was at all strict, because the
converter would get called on junk data when returning NULL. Also
ensure that it gives an error rather than coredumping if someone tries
to use it in a trigger function.
Tom Lane [Fri, 16 Feb 2001 03:16:58 +0000 (03:16 +0000)]
Clean up two rather nasty bugs in operator selection code.
1. If there is exactly one pg_operator entry of the right name and oprkind,
oper() and related routines would return that entry whether its input type
had anything to do with the request or not. This is just premature
optimization: we shouldn't return the single candidate until after we verify
that it really is a valid candidate, ie, is at least coercion-compatible
with the given types.
2. oper() and related routines only promise a coercion-compatible result.
Unfortunately, there were quite a few callers that assumed the returned
operator is binary-compatible with the given datatype; they would proceed
to call it without making any datatype coercions. These callers include
sorting, grouping, aggregation, and VACUUM ANALYZE. In general I think
it is appropriate for these callers to require an exact or binary-compatible
match, so I've added a new routine compatible_oper() that only succeeds if
it can find an operator that doesn't require any run-time conversions.
Callers now call oper() or compatible_oper() depending on whether they are
prepared to deal with type conversion or not.
The upshot of these bugs is revealed by the following silliness in PL/Tcl's
selftest: it creates an operator @< on int4, and then tries to use it to
sort a char(N) column. The system would let it do that :-( (and evidently
has done so since 6.3 :-( :-(). The result in this case was just a silly
sort order, but the reverse combination would've provoked coredump from
trying to dereference integers. With this fix you get more reasonable
behavior:
pltcl_test=# select * from T_pkey1 order by key1, key2 using @<;
ERROR: Unable to identify an operator '@<' for types 'bpchar' and 'bpchar'
You will have to retype this query using an explicit cast
Hiroshi Inoue [Fri, 16 Feb 2001 03:10:09 +0000 (03:10 +0000)]
Add casting for numeric/float4/float8 type value
automatically to compensate the lack of automatic
conversion functionality of PostgreSQL server.
For example if there's a numeric type binding
1.2567 --> 1.2567::numeric.
I hope this change would enable the use of numeric
type in MS-Access etc.
Tom Lane [Fri, 16 Feb 2001 00:03:08 +0000 (00:03 +0000)]
Take OUTER JOIN semantics into account when estimating the size of join
relations. It's not very bright, but at least it now knows that
A LEFT JOIN B must produce at least as many rows as are in A ...
Tom Lane [Thu, 15 Feb 2001 20:57:01 +0000 (20:57 +0000)]
Although we can't support out-of-line TOAST storage in indexes (yet),
compressed storage works perfectly well. Might as well have a coherent
strategy for applying it, rather than the haphazard store-what-you-get
approach that was in the code before. The strategy I've set up here is
to attempt compression of any compressible index value exceeding
BLCKSZ/16, or about 500 bytes by default.
Tom Lane [Thu, 15 Feb 2001 17:55:17 +0000 (17:55 +0000)]
Reduce default selectivity estimates for geometric operators; it seems
the old ones were not small enough to ensure r-tree and gist indexes would
get picked when available. These numbers are totally bogus anyway, but
in the absence of any real estimation technique, we'd like to select
indexes when available ...
Hiroshi Inoue [Thu, 15 Feb 2001 05:32:00 +0000 (05:32 +0000)]
1) Change transaction boundary in autocommit off mode
per recent discussion in pgsql-odbc. Now SELECT is
a boundary but VACUUM isn't.
2) Put back the error handling behavior. When elog(ERROR)
was detected the driver automatically issue "ABORT"
if a transaction is in progress.
3) Driver version is 7.01.0003(Dave already set it but
it was put back).
Tom Lane [Thu, 15 Feb 2001 04:10:54 +0000 (04:10 +0000)]
Improve documentation of JOIN syntax. Explain NATURAL as an alternative
to ON and USING for specifying the join condition, not as an independent
kind of join semantics.
Tom Lane [Thu, 15 Feb 2001 01:10:28 +0000 (01:10 +0000)]
Arrange for ORDER BY an expression on a UNION/INTERSECT/EXCEPT result,
such as
SELECT f1 FROM foo UNION SELECT ... ORDER BY upper(f1)
to draw
'ORDER BY on a UNION/INTERSECT/EXCEPT result must be on one of the result columns'
rather than the uninformative 'f1 not found' we were producing before.
Eventually this should actually work, but that looks much too hard to try
to implement in late beta...
Tom Lane [Wed, 14 Feb 2001 21:35:07 +0000 (21:35 +0000)]
Change scoping of table and join refnames to conform to SQL92: a JOIN
clause with an alias is a <subquery> and therefore hides table references
appearing within it, according to the spec. This is the same as the
preliminary patch I posted to pgsql-patches yesterday, plus some really
grotty code in ruleutils.c to reverse-list a query tree with the correct
alias name depending on context. I'd rather not have done that, but unless
we want to force another initdb for 7.1, there's no other way for now.
Peter Eisentraut [Wed, 14 Feb 2001 19:37:26 +0000 (19:37 +0000)]
Alter documentation of boolean type, add example. Someone figured that it
wasn't clear that the "boolean type" was actually called "boolean". Add
tip about "casting" booleans using CASE.
Peter Mount [Wed, 14 Feb 2001 17:45:17 +0000 (17:45 +0000)]
Web Feb 14 17:29:00 GMT 2001 peter@retep.org.uk
- Fixed bug in LargeObject & BlobOutputStream where the stream's output
was not flushed when either the stream or the blob were closed.
- Fixed PreparedStatement.setBinaryStream() where it ignored the length
Bruce Momjian [Wed, 14 Feb 2001 05:45:46 +0000 (05:45 +0000)]
Back out all ODBC formatting changes, and back out removal of <6.4
protocol. I have left in Tom's SOCK_get_next_byte() fix, and the new
win32.mak file addition. I have also left in the 'X' connection close
fix.
Peter Eisentraut [Tue, 13 Feb 2001 21:27:05 +0000 (21:27 +0000)]
Custom DSSSL stylesheet. Style changes included here:
HTML:
* make .html the default extension
* allow use of CSS stylesheet ("stylesheet.css", not included)
* make <set> TOC two levels deep
* put time of creation into meta header
Print:
* make print output justified by default
* footnotes at bottom of each page
* allow TeX to hyphenate
Vadim B. Mikheev [Tue, 13 Feb 2001 20:40:25 +0000 (20:40 +0000)]
Comments about GetFreeXLBuffer().
GetFreeXLBuffer(): use Insert->LgwrResult instead of private LgwrResult
copy if it's more fresh (attempt to avoid acquiring info_lck/lgwr_lck).
Peter Mount [Tue, 13 Feb 2001 16:39:06 +0000 (16:39 +0000)]
Some more including the patch to DatabaseMetaData backed out by Bruce.
Tue Feb 13 16:33:00 GMT 2001 peter@retep.org.uk
- More TestCases implemented. Refined the test suite api's.
- Removed need for SimpleDateFormat in ResultSet.getDate() improving
performance.
- Rewrote ResultSet.getTime() so that it uses JDK api's better.
Tue Feb 13 10:25:00 GMT 2001 peter@retep.org.uk
- Added MiscTest to hold reported problems from users.
- Fixed PGMoney.
- JBuilder4/JDBCExplorer now works with Money fields. Patched Field &
ResultSet (lots of methods) for this one. Also changed cash/money to
return type DOUBLE not DECIMAL. This broke JBuilder as zero scale
BigDecimal's can't have decimal places!
- When a Statement is reused, the previous ResultSet is now closed.
- Removed deprecated call in ResultSet.getTime()
Thu Feb 08 18:53:00 GMT 2001 peter@retep.org.uk
- Changed a couple of settings in DatabaseMetaData where 7.1 now
supports those features
- Implemented the DatabaseMetaData TestCase.
Wed Feb 07 18:06:00 GMT 2001 peter@retep.org.uk
- Added comment to Connection.isClosed() explaining why we deviate from
the JDBC2 specification.
- Fixed bug where the Isolation Level is lost while in autocommit mode.
- Fixed bug where several calls to getTransactionIsolationLevel()
returned the first call's result.
Philip Warner [Tue, 13 Feb 2001 01:31:54 +0000 (01:31 +0000)]
- Fix help output: replace 'f' with 't' and change desc
- Add extra arg to formatStringLiteral to specify how to handle LF & TAB.
I opted for encoding them except in procedure bodies & comments
- Fixed bug in tar file input when restoring blobs
Tom Lane [Tue, 13 Feb 2001 00:02:36 +0000 (00:02 +0000)]
Clean up portability problems in regexp package: change all routine
definitions from K&R to ANSI C style, and fix broken assumption that
int and long are the same datatype. This repairs problems observed
on Alpha with regexps having between 32 and 63 states.
Tom Lane [Mon, 12 Feb 2001 20:07:21 +0000 (20:07 +0000)]
Rearrange order of operations in heap_create_with_catalog so that if
two transactions create the same table name concurrently, the one that
fails will complain about unique index pg_class_relname_index, rather than
about pg_type_typname_index which'll confuse most people. Free side
benefit: pg_class.reltype is correctly linked to the pg_type entry now.
It's been zero in all but the preloaded pg_class entries since who knows
when.
Bruce Momjian [Mon, 12 Feb 2001 14:21:27 +0000 (14:21 +0000)]
User Manual
Chapter 4
String Operators
Table 4.7: Other String Functions
strpos is missing the result in the result column, it should be 2
Also to_ascii might need a result but maybe not.
Appendix A
In the Time Zone Table
Greenwich is spelled Greenwish
Bruce Momjian [Sun, 11 Feb 2001 02:01:22 +0000 (02:01 +0000)]
The attached patch does the following:
1) Tidies up the Datasource Dialogue now the version options are gone.
2) Tidies a comment in info.c.
3) Increments all version numbers to 07.01.0003 to take account of recent
revisions.
Peter Eisentraut [Sat, 10 Feb 2001 22:31:42 +0000 (22:31 +0000)]
Only look for bison as YACC; other yaccs need to be selected explicitly.
When no suitable YACC is configured, supply useful informational messages
to users. (Same way flex has been handled for a while.)