summaryrefslogtreecommitdiff
path: root/src/pl
AgeCommit message (Collapse)Author
2002-12-30Adjust Tcl-related code to compile cleanly with Tcl 8.4 (add const modifiers asTom Lane
needed). Some desultory const-ification of SPI interface to support this.
2002-12-30Make use of TCL_INCLUDE_SPEC if available (it's new in Tcl 8.4, too badTom Lane
it took 'em this long to realize it's needed...)
2002-12-17Fix typo.Tom Lane
2002-12-15Revise executor APIs so that all per-query state structure is built inTom Lane
a per-query memory context created by CreateExecutorState --- and destroyed by FreeExecutorState. This provides a final solution to the longstanding problem of memory leaked by various ExecEndNode calls.
2002-12-13Phase 3 of read-only-plans project: ExecInitExpr now builds expressionTom Lane
execution state trees, and ExecEvalExpr takes an expression state tree not an expression plan tree. The plan tree is now read-only as far as the executor is concerned. Next step is to begin actually exploiting this property.
2002-12-12Phase 2 of read-only-plans project: restructure expression-tree nodesTom Lane
so that all executable expression nodes inherit from a common supertype Expr. This is somewhat of an exercise in code purity rather than any real functional advance, but getting rid of the extra Oper or Func node formerly used in each operator or function call should provide at least a little space and speed improvement. initdb forced by changes in stored-rules representation.
2002-12-05Phase 1 of read-only-plans project: cause executor state nodes to pointTom Lane
to plan nodes, not vice-versa. All executor state nodes now inherit from struct PlanState. Copying of plan trees has been simplified by not storing a list of SubPlans in Plan nodes (eliminating duplicate links). The executor still needs such a list, but it can build it during ExecutorStart since it has to scan the plan tree anyway. No initdb forced since no stored-on-disk structures changed, but you will need a full recompile because of node-numbering changes.
2002-11-30Code review for IS DISTINCT FROM patch. Fix incorrect constant-foldingTom Lane
logic, dissuade planner from thinking that 'x IS DISTINCT FROM 42' may be optimized into 'x = 42' (!!), cause dependency on = operator to be recorded correctly, minor other improvements.
2002-11-23This patch implements FOR EACH STATEMENT triggers, per my email toBruce Momjian
-hackers a couple days ago. Notes/caveats: - added regression tests for the new functionality, all regression tests pass on my machine - added pg_dump support - updated PL/PgSQL to support per-statement triggers; didn't look at the other procedural languages. - there's (even) more code duplication in trigger.c than there was previously. Any suggestions on how to refactor the ExecXXXTriggers() functions to reuse more code would be welcome -- I took a brief look at it, but couldn't see an easy way to do it (there are several subtly-different versions of the code in question) - updated the documentation. I also took the liberty of removing a big chunk of duplicated syntax documentation in the Programmer's Guide on triggers, and moving that information to the CREATE TRIGGER reference page. - I also included some spelling fixes and similar small cleanups I noticed while making the changes. If you'd like me to split those into a separate patch, let me know. Neil Conway
2002-11-22Fix a dozen or so places that were passing unpredictable data stringsTom Lane
as elog format strings. Hai-Chen Tu pointed out the problem in contrib/dbmirror, but it wasn't the only such error.
2002-11-13Add new palloc0 call as merge of palloc and MemSet(0).Bruce Momjian
2002-11-11Back out use of palloc0 in place if palloc/MemSet. Seems constant lenBruce Momjian
to MemSet is a performance boost.
2002-11-10Merge palloc()/MemSet(0) calls into a single palloc0() call.Bruce Momjian
2002-11-10This patch makes a minor cleanup to the implementation of PERFORM inBruce Momjian
PL/PgSQL. Previously, it had been bundled together with the assign statement implementation, for some reason that wasn't clear to me (they certainly don't share any code with one another). So I separated them and made PERFORM a statement like any other. No changes in functionality. Along the way, I added some regression tests for PERFORM, added a bunch more SGML tags to the PL/PgSQL docs, and removed an obsolete comment relating to the implementation of RETURN NEXT. Neil Conway
2002-11-07Remove no-longer-needed inclusions to improve backward compatibilityTom Lane
with older bison versions.
2002-11-01Arrange to compile flex output files as inclusions into other filesTom Lane
(usually bison output files), not as standalone files. This hack works around flex's insistence on including <stdio.h> before we are able to include postgres.h; postgres.h will already be read before the compiler starts to read the flex output file. Needed for largefile support on some platforms.
2002-10-19Fix within-function memory leaks in the various PLs' interfaces toTom Lane
SPI_prepare: they all save the prepared plan into topCxt, and so the procCxt copy that's actually returned by SPI_prepare ought to be freed. Diagnosis and plpython fix by Nigel Andrews, followup for other PLs by Tom Lane.
2002-10-19Fix pltcl self-test for recent changes to elog.Tom Lane
2002-10-18Make 'dummy' declarations in header files be 'extern int no_such_variable'Tom Lane
instead of 'extern int errno'; the latter is unsafe according to the ANSI C standard, as well as in practice on some platforms.
2002-10-14I have attached two patches as per:Bruce Momjian
1) pltcl: Add SPI_freetuptable() calls to avoid memory leaks (Me + Neil Conway) Change sprintf()s to snprintf()s (Neil Conway) Remove header files included elsewhere (Neil Conway) 2)plpython: Add SPI_freetuptable() calls to avoid memory leaks Cosemtic change to remove a compiler warning Notes: I have tested pltcl.c for a) the original leak problem reported for the repeated call of spi_exec in a TCL fragment and b) the subsequent report resulting from the use of spi_exec -array in a TCL fragment. The plpython.c patch is exactly the same as that applied to make revision 1.23, the plpython_schema.sql and feature.expected sections of the patch are also the same as last submited, applied and subsequently reversed out. It remains untested by me (other than via make check). However, this should be safe provided PyString_FromString() _copies_ the given string to make a PyObject. Nigel J. Andrews
2002-09-26Back out /pl memory leak patch. Wait for new version.Bruce Momjian
2002-09-26I have attached the pltcl patch again, just in case. For the sake of clarityBruce Momjian
let's say this patch superscedes the previous one. I have also attached a patch addressing the similar memory leak problem in plpython. This includes a slight adjustment of the tests in the source directory. The patch also includes a cosmetic change to remove a compiler warning although I think the change makes the code look worse though. BTW, by my reckoning the memory leak would occur with prepared plans and without. If that is not the case then I've been barking up the wrong tree. Nigel J. Andrews
2002-09-22Remove commas for compatibility with newer releases of bison.Tom Lane
2002-09-21Provide an upgrade strategy for dump files containing functions declaredTom Lane
with OPAQUE. CREATE LANGUAGE, CREATE TRIGGER, and CREATE TYPE will all accept references to functions declared with OPAQUE --- but they will issue a NOTICE, and will modify the function entries in pg_proc to have the preferred type-safe argument or result types instead of OPAQUE. Per recent pghackers discussions.
2002-09-12> Sean Chittenden <sean@chittenden.org> writes:Bruce Momjian
> >>::sigh:: Is it me or does it look like all >>of pl/pgsql is schema un-aware (ie, all of the declarations). -sc > > > Yeah. The group of routines parse_word, parse_dblword, etc that are > called by the lexer certainly all need work. There are some > definitional issues to think about, too --- plpgsql presently relies on > the number of names to give it some idea of what to look for, and those > rules are probably all toast now. Please come up with a sketch of what > you think the behavior should be before you start hacking code. Attached is a diff -c format proposal to fix this. I've also attached a short test script. Seems to work OK and passes all regression tests. Here's a breakdown of how I understand plpgsql's "Special word rules" -- I think it illustrates the behavior reasonably well. New functions added by this patch are plpgsql_parse_tripwordtype and plpgsql_parse_dblwordrowtype: Joe Conway
2002-09-05Assorted fixes for Cygwin:Peter Eisentraut
Eliminate the mysterious games that the Cygwin build plays with the linker flag variables. DLLLIBS is gone, use SHLIB_LINK like everyone else. Detect cygipc in configure, after the linker flags are set up, otherwise configure might not work at all. Make sure everything is covered by make clean. Fix the build of the new conversion procedure modules. Add new DLLIMPORT markers where required. Finally, the compiler complains if we use an explicit -I/usr/local/include, so don't do that. Curiously, -L/usr/local/lib is still necessary.
2002-09-05Be careful to include postgres.h *before* any system headers, to ensureTom Lane
that the right flavors of largefile-related definitions are seen. Most of these changes are probably unnecessary, but better safe than sorry.
2002-09-04Fix compile warning.Peter Eisentraut
2002-09-04Fix includes for plperl: ensure postgres.h is included first,Tom Lane
remove unnecessary inclusions.
2002-09-04pgindent run.Bruce Momjian
2002-09-01plpgsql functions can return RECORD, per Neil Conway.Tom Lane
2002-08-30Add expected tuple descriptor to ReturnSetInfo information for tableTom Lane
functions, per suggestion from John Gray and Joe Conway. Also, fix plpgsql RETURN NEXT to verify that returned values match the expected tupdesc.
2002-08-30PL/pgSQL functions can return sets. Neil Conway's patch, modified soTom Lane
that the functionality is available to anyone via ReturnSetInfo, rather than hard-wiring it to PL/pgSQL.
2002-08-29Remove #ifdef MULTIBYTE per hackers list discussion.Tatsuo Ishii
2002-08-29FOUND patch was a bit over-enthusiastic: SQL commands that are notTom Lane
INSERT, UPDATE, or DELETE shouldn't change FOUND. IMHO anyway. Also, try to make documentation a little clearer.
2002-08-28backend where a statically sized buffer is written to. Most of theseBruce Momjian
should be pretty safe in practice, but it's probably better to be safe than sorry. I was actually looking for cases where NAMEDATALEN is assumed to be 32, but only found one. That's fixed too, as well as a few bits of code cleanup. Neil Conway
2002-08-24The cstring datatype can now be copied, passed around, etc. The typlenTom Lane
value '-2' is used to indicate a variable-width type whose width is computed as strlen(datum)+1. Everything that looks at typlen is updated except for array support, which Joe Conway is working on; at the moment it wouldn't work to try to create an array of cstring.
2002-08-22Since the plpgsql test has been part of the standard regression testsTom Lane
for a good long while, I see no reason to maintain this original copy.
2002-08-22Add a bunch of pseudo-types to replace the behavior formerly associatedTom Lane
with OPAQUE, as per recent pghackers discussion. I still want to do some more work on the 'cstring' pseudo-type, but I'm going to commit the bulk of the changes now before the tree starts shifting under me ...
2002-08-20This patch improves the behavior of FOUND in PL/PgSQL. In Oracle,Bruce Momjian
FOUND is set whenever a SELECT INTO returns > 0 rows, *or* when an INSERT, UPDATE, or DELETE affects > 0 rows. We implemented the first part of this behavior, but not the second. I also improved the documentation on the various situations in which FOUND can be set (excluding inside FOR loops, which I still need to think about), and added some regression tests for this behavior. Neil Conway
2002-08-15Tom Lane wrote:Bruce Momjian
> There's no longer a separate call to heap_storage_create in that routine > --- the right place to make the test is now in the storage_create > boolean parameter being passed to heap_create. A simple change, but > it passeth patch's understanding ... Thanks. Attached is a patch against cvs tip as of 8:30 PM PST or so. Turned out that even after fixing the failed hunks, there was a new spot in bufmgr.c which needed to be fixed (related to temp relations; RelationUpdateNumberOfBlocks). But thankfully the regression test code caught it :-) Joe Conway
2002-08-12Restructure rowtype-parameter handling to eliminate need for possibly-Tom Lane
overflowable buffer for 'name%rowtype'; not to mention avoid problems with mixed-case type names and other special cases.
2002-08-08Clean up plpgsql identifier handling: process quoted identifiersTom Lane
correctly, truncate to NAMEDATALEN where needed, allow whitespace around dots in qualified identifiers. Get rid of T_RECFIELD and T_TGARGV token categories, which weren't accomplishing anything except to create room for sins of omission in the grammar, ie, places that should have allowed them and didn't. Fix a few other bugs en passant.
2002-08-04Back out pl/pgsql quotation fix. Has problems.Bruce Momjian
2002-08-04 I send a simple patch for PL/pgSQL parser which allow now to useBruce Momjian
whitespaces in identifers of any kind(table names,attribute names,variables ...) in Pl/pgSQL procedural language.Explicit definition of bug can be found in Re: [HACKERS] Bug of PL/pgSQL parser TODO item completed: o -Fix PL/PgSQL to handle quoted mixed-case identifiers eutm
2002-08-02ALTER TABLE DROP COLUMN works. Patch by Christopher Kings-Lynne,Tom Lane
code review by Tom Lane. Remaining issues: functions that take or return tuple types are likely to break if one drops (or adds!) a column in the table defining the type. Need to think about what to do here. Along the way: some code review for recent COPY changes; mark system columns attnotnull = true where appropriate, per discussion a month ago.
2002-07-30Since we're depending on %option noyywrap in the main scanner now,Tom Lane
we may as well use it in all our flex files. Make all the flex files have a consistent set of options.
2002-07-20oid is needed, it is added at the end of the struct (after the nullBruce Momjian
bitmap, if present). Per Tom Lane's suggestion the information whether a tuple has an oid or not is carried in the tuple descriptor. For debugging reasons tdhasoid is of type char, not bool. There are predefined values for WITHOID, WITHOUTOID and UNDEFOID. This patch has been generated against a cvs snapshot from last week and I don't expect it to apply cleanly to current sources. While I post it here for public review, I'm working on a new version against a current snapshot. (There's been heavy activity recently; hope to catch up some day ...) This is a long patch; if it is too hard to swallow, I can provide it in smaller pieces: Part 1: Accessor macros Part 2: tdhasoid in TupDesc Part 3: Regression test Part 4: Parameter withoid to heap_addheader Part 5: Eliminate t_oid from HeapTupleHeader Part 2 is the most hairy part because of changes in the executor and even in the parser; the other parts are straightforward. Up to part 4 the patched postmaster stays binary compatible to databases created with an unpatched version. Part 5 is small (100 lines) and finally breaks compatibility. Manfred Koizar
2002-07-18Fix typo (PG_UNICODE -> PG_UTF8)Tatsuo Ishii
2002-07-18Fix breakage for pltcl modules. pg_get_enconv_by_encoding() has beenTatsuo Ishii
changed since CREATE CONVERSION supported.