summaryrefslogtreecommitdiff
path: root/src/backend/utils/adt
AgeCommit message (Collapse)Author
2006-05-30Fix ancient misdescription of namegt/namege in comment. Greg StarkTom Lane
2006-05-28Fix up pg_dump to do string escaping fully correctly for client encodingTom Lane
and standard_conforming_strings; likewise for the other client programs that need it. As per previous discussion, a pg_dump dump now conforms to the standard_conforming_strings setting of the source database. We don't use E'' syntax in the dump, thereby improving portability of the SQL. I added a SET escape_strings_warning = off command to keep the dumps from getting a lot of back-chatter from that.
2006-05-26Use E'' strings internally only when standard_conforming_strings =Bruce Momjian
'off'. This allows pg_dump output with standard_conforming_strings = 'on' to generate proper strings that can be loaded into other databases without the backslash doubling we typically do. I have added the dumping of the standard_conforming_strings value to pg_dump. I also added standard backslash handling for plpgsql.
2006-05-21Change the backend to reject strings containing invalidly-encoded multibyteTom Lane
characters in all cases. Formerly we mostly just threw warnings for invalid input, and failed to detect it at all if no encoding conversion was required. The tighter check is needed to defend against SQL-injection attacks as per CVE-2006-2313 (further details will be published after release). Embedded zero (null) bytes will be rejected as well. The checks are applied during input to the backend (receipt from client or COPY IN), so it no longer seems necessary to check in textin() and related routines; any string arriving at those functions will already have been validated. Conversion failure reporting (for characters with no equivalent in the destination encoding) has been cleaned up and made consistent while at it. Also, fix a few longstanding errors in little-used encoding conversion routines: win1251_to_iso, win866_to_iso, euc_tw_to_big5, euc_tw_to_mic, mic_to_euc_tw were all broken to varying extents. Patches by Tatsuo Ishii and Tom Lane. Thanks to Akio Ishida and Yasuo Ohgaki for identifying the security issues.
2006-05-19Add last-vacuum/analyze-time columns to the stats collector, both manual andAlvaro Herrera
issued by autovacuum. Add accessor functions to them, and use those in the pg_stat_*_tables system views. Catalog version bumped due to changes in the pgstat views and the pgstat file. Patch from Larry Rosenman, minor improvements by me.
2006-05-19Have autovacuum report its activities to the stat collector.Alvaro Herrera
2006-05-02GIN: Generalized Inverted iNdex.Teodor Sigaev
text[], int4[], Tsearch2 support for GIN.
2006-05-02Avoid assuming that statistics for a parent relation reflect the properties ofTom Lane
the union of its child relations as well. This might have been a good idea when it was originally coded, but it's a fatally bad idea when inheritance is being used for partitioning. It's better to have no stats at all than completely misleading stats. Per report from Mark Liberman. The bug arguably exists all the way back, but I've only patched HEAD and 8.1 because we weren't particularly trying to support partitioning before 8.1. Eventually we ought to look at deriving union statistics instead of just punting, but for now the drop kick looks good.
2006-05-01Provide a namespace.c function for lookup of an operator with exactTom Lane
input datatypes given, and use this before trying OpernameGetCandidates. This is faster than the old method when there's an exact match, and it does not seem materially slower when there's not. And it definitely makes some of the callers cleaner, because they didn't really want to know about a list of candidates anyway. Per discussion with Atsushi Ogawa.
2006-04-30Code review for GRANT CONNECT patch. Spell the privilege as CONNECT notTom Lane
CONNECTION, fix a number of places that were missed (eg pg_dump support), avoid executing an extra search of pg_database during startup.
2006-04-30Improve the representation of FOR UPDATE/FOR SHARE so that we canTom Lane
support both FOR UPDATE and FOR SHARE in one command, as well as both NOWAIT and normal WAIT behavior. The more general code is actually simpler and cleaner.
2006-04-30Add GRANT CONNECTION ON DATABASE, to be used in addition to pg_hba.conf.Bruce Momjian
Gevik Babakhani
2006-04-27Generalize mcv_selectivity() to support both VAR OP CONST and CONST OP VARTom Lane
cases. This was not needed in the existing uses within selfuncs.c, but if we're gonna export it for general use, the extra generality seems helpful. Motivated by looking at ltree example.
2006-04-27If we're going to expose VariableStatData for contrib modules to use,Tom Lane
then we should export a reasonable set of the supporting routines too.
2006-04-26Move ltree parentsel() selectivity function into /contrib/ltree.Bruce Momjian
2006-04-26Enhanced containment selectivity function for /contrib/ltreeBruce Momjian
Matteo Beccati
2006-04-25Add statement_timestamp(), clock_timestamp(), andBruce Momjian
transaction_timestamp() (just like now()). Also update statement_timeout() to mention it is statement arrival time that is measured. Catalog version updated.
2006-04-24Improve our private implementation of cbrt() to give results of theTom Lane
accuracy expected by the regression tests. Per suggestion from Martijn van Oosterhout.
2006-04-24Remove compiler warning by casting SNPRINTF() call to void.Bruce Momjian
Report from Gevik Babakhani.
2006-04-22Simplify ParamListInfo data structure to support only numbered parameters,Tom Lane
not named ones, and replace linear searches of the list with array indexing. The named-parameter support has been dead code for many years anyway, and recent profiling suggests that the searching was costing a noticeable amount of performance for complex queries.
2006-04-20Eliminate some no-longer-needed workarounds for palloc's old behaviorTom Lane
of rejecting palloc(0). Also, tweak like_selectivity() to avoid assuming the presented pattern is nonempty; although that assumption is valid, it doesn't really help much, and the new coding is more correct anyway since it properly handles redundant wildcards. In combination these changes should eliminate a Coverity warning noted by Martijn.
2006-04-19Fix problem that sscanf(buf, "%d", &val) eats leading white space, butBruce Momjian
our to_* functions were not handling that.
2006-04-19C code whitespace inprovement for formatting.c.Bruce Momjian
2006-04-13Fix similar_escape() so that SIMILAR TO works properly for patterns involvingTom Lane
alternatives ("|" symbol). The original coding allowed the added ^ and $ constraints to be absorbed into the first and last alternatives, producing a pattern that would match more than it should. Per report from Eric Noriega. I also changed the pattern to add an ARE director ("***:"), ensuring that SIMILAR TO patterns do not change behavior if regex_flavor is changed. This is necessary to make the non-capturing parentheses work, and seems like a good idea on general principles. Back-patched as far as 7.4. 7.3 also has the bug, but a fix seems impractical because that version's regex engine doesn't have non-capturing parens.
2006-04-08Fix EXPLAIN so that it can drill down through multiple levels of subplanTom Lane
when trying to locate the referent of a RECORD variable. This fixes the 'record type has not been registered' failure reported by Stefan Kaltenbrunner about a month ago. A side effect of the way I chose to fix it is that most variable references in join conditions will now be properly labeled with the variable's source table name, instead of the not-too-helpful 'outer' or 'inner' we used to use.
2006-04-05Fix a bunch of problems with domains by making them use special input functionsTom Lane
that apply the necessary domain constraint checks immediately. This fixes cases where domain constraints went unchecked for statement parameters, PL function local variables and results, etc. We can also eliminate existing special cases for domains in places that had gotten it right, eg COPY. Also, allow domains over domains (base of a domain is another domain type). This almost worked before, but was disallowed because the original patch hadn't gotten it quite right.
2006-04-04Modify all callers of datatype input and receive functions so that if theseTom Lane
functions are not strict, they will be called (passing a NULL first parameter) during any attempt to input a NULL value of their datatype. Currently, all our input functions are strict and so this commit does not change any behavior. However, this will make it possible to build domain input functions that centralize checking of domain constraints, thereby closing numerous holes in our domain support, as per previous discussion. While at it, I took the opportunity to introduce convenience functions InputFunctionCall, OutputFunctionCall, etc to use in code that calls I/O functions. This eliminates a lot of grotty-looking casts, but the main motivation is to make it easier to grep for these places if we ever need to touch them again.
2006-03-23Add error location info to ResTarget parse nodes. Allows error cursor to be ↵Tom Lane
supplied for various mistakes involving INSERT and UPDATE target columns.
2006-03-19Fix a few places that were checking for the return value of palloc() to beNeil Conway
non-NULL: palloc() ereports on OOM, so we can safely assume it returns a valid pointer.
2006-03-16Clean up representation of function RTEs for functions returning RECORD.Tom Lane
The original coding stored the raw parser output (ColumnDef and TypeName nodes) which was ugly, bulky, and wrong because it failed to create any dependency on the referenced datatype --- and in fact would not track type renamings and suchlike. Instead store a list of column type OIDs in the RTE. Also fix up general failure of recordDependencyOnExpr to do anything sane about recording dependencies on datatypes. While there are many cases where there will be an indirect dependency (eg if an operator returns a datatype, the dependency on the operator is enough), we do have to record the datatype as a separate dependency in examples like CoerceToDomain. initdb forced because of change of stored rules.
2006-03-14Improve parser so that we can show an error cursor position for errorsTom Lane
during parse analysis, not only errors detected in the flex/bison stages. This is per my earlier proposal. This commit includes all the basic infrastructure, but locations are only tracked and reported for errors involving column references, function calls, and operators. More could be done later but this seems like a good set to start with. I've also moved the ReportSyntaxErrorPosition logic out of psql and into libpq, which should make it available to more people --- even within psql this is an improvement because warnings weren't handled by ReportSyntaxErrorPosition.
2006-03-11Remove copyright notices from Jan (per author approval), and those filesBruce Momjian
derived from Jan's.
2006-03-11Remove a few places that attempted to define INT_MAX, SCHAR_MAX, andNeil Conway
similar constants if they were not previously defined. All these constants must be defined by limits.h according to C89, so we can safely assume they are present.
2006-03-10Implement 4 new aggregate functions from SQL2003. Specifically: var_pop(),Neil Conway
var_samp(), stddev_pop(), and stddev_samp(). var_samp() and stddev_samp() are just renamings of the historical Postgres aggregates variance() and stddev() -- the latter names have been kept for backward compatibility. This patch includes updates for the documentation and regression tests. The catversion has been bumped. NB: SQL2003 requires that DISTINCT not be specified for any of these aggregates. Per discussion on -patches, I have NOT implemented this restriction: if the user asks for stddev(DISTINCT x), presumably they know what they are doing.
2006-03-07Remove the stub support we had for UNION JOIN; per discussion, this isTom Lane
not likely ever to be implemented seeing it's been removed from SQL2003. This allows getting rid of the 'filter' version of yylex() that we had in parser.c, which should save at least a few microseconds in parsing.
2006-03-06Attached is the new patch. To summarize:Bruce Momjian
- new function justify_interval(interval) - modified function justify_hours(interval) - modified function justify_days(interval) These functions are defined to meet the requirements as discussed in this thread. Specifically: - justify_hours makes certain the sign bit on the hours matches the sign bit on the days. It only checks the sign bit on the days, and not the months, when determining if the hours should be positive or negative. After the call, -24 < hours < 24. - justify_days makes certain the sign bit on the days matches the sign bit on the months. It's behavior does not depend on the hours, nor does it modify the hours. After the call, -30 < days < 30. - justify_interval makes sure the sign bits on all three fields months, days, and hours are all the same. After the call, -24 < hours < 24 AND -30 < days < 30. Mark Dilger
2006-03-05Update copyright for 2006. Update scripts.Bruce Momjian
2006-03-03Add comment about localized month names for to_date and to_timestamp.Bruce Momjian
2006-03-02Repair oidvectorrecv and int2vectorrecv, which I broke while changingTom Lane
them to use array_recv :-(. Per report from Tim Kordas.
2006-03-01Attached is a patch that replaces a bunch of places where StringInfosNeil Conway
are unnecessarily allocated on the heap rather than the stack. If the StringInfo doesn't outlive the stack frame in which it is created, there is no need to allocate it on the heap via makeStringInfo() -- stack allocation is faster. While it's not a big deal unless the code is in a critical path, I don't see a reason not to save a few cycles -- using stack allocation is not less readable. I also cleaned up a bit of code along the way: moved variable declarations into a more tightly-enclosing scope where possible, fixed some pointless copying of strings in dblink, etc.
2006-02-28Allow the syntax CREATE TYPE foo, with no parameters, to permit explicitTom Lane
creation of a shell type. This allows a less hacky way of dealing with the mutual dependency between a datatype and its I/O functions: make a shell type, then make the functions, then define the datatype fully. We should fix pg_dump to handle things this way, but this commit just deals with the backend. Martijn van Oosterhout, with some corrections by Tom Lane.
2006-02-27Add mention that tid perhaps someday should be output as a record.Bruce Momjian
2006-02-26Implement the <> operator for the tid type. Original patch from MarkNeil Conway
Kirkwood, minor improvements by Neil Conway. The regression tests have been updated and the catversion has been bumped.
2006-02-26Fix typo in comment.Neil Conway
2006-02-12Revert because C locale uses "" for thousands_sep, meaning "n/a", whileBruce Momjian
French uses "" for "don't want". Seems we have to keep the existing behavior.
2006-02-12Support "" for thousands separator and plus sign in to_char(), perBruce Momjian
report from French Debian user. psql already handles "" fine.
2006-02-12Allow to_char() to print localized month and day names.Bruce Momjian
Euler Taveira de Oliveira
2006-02-11Fix incorrect addition, subtraction, and overflow checking in newTom Lane
inet operators.
2006-02-11Add INET/CIDR operators: and, or, not, plus int8, minus int8, and inetBruce Momjian
minus inet. Stephen R. van den Berg
2006-02-09Reject out-of-range dates in date_in().Tom Lane
Kris Jurka