aboutsummaryrefslogtreecommitdiff
path: root/src/interfaces/ecpg/preproc/descriptor.c
Commit message (Collapse)AuthorAge
* ecpg: clean up some other assorted memory leaks.Tom Lane2024-11-27
| | | | | | | | | | | | | | | | | | | | | | | | | | Avoid leaking the prior value when updating the "connection" state variable. Ditto for ECPGstruct_sizeof. (It seems like this one ought to be statement-local, but testing says it isn't, and I didn't feel like diving deeper.) The actual_type[] entries are statement-local, though, so no need to mm_strdup() strings stored in them. Likewise, sqlda variables are statement-local, so we can loc_alloc them. Also clean up sloppiness around management of the argsinsert and argsresult lists. progname changes are strictly to prevent valgrind from complaining about leaked allocations. With this, valgrind reports zero leakage in the ecpg preprocessor for all of our ecpg regression test cases. Discussion: https://postgr.es/m/2011420.1713493114@sss.pgh.pa.us
* ecpg: improve preprocessor's memory management.Tom Lane2024-10-14
| | | | | | | | | | | | | | | | | | | | | | | Invent a notion of "local" storage that will automatically be reclaimed at the end of each statement. Use this for location strings as well as other visibly short-lived data within the parser. Also, make cat_str and make_str return local storage and not free their inputs, which allows dispensing with a whole lot of retail mm_strdup calls. We do have to add some new ones in places where a local-lifetime string needs to be added to a longer-lived data structure, but on balance there are a lot less mm_strdup calls than before. In hopes of flushing out places where changes were necessary, I changed YYLTYPE from "char *" to "const char *", which forced const-ification of various function arguments that probably should've been like that all along. This still leaks somewhat more memory than v17, but that will be cleaned up in future commits. Discussion: https://postgr.es/m/2011420.1713493114@sss.pgh.pa.us
* Remove redundant null pointer checks before free()Peter Eisentraut2022-07-03
| | | | | | | | | | Per applicable standards, free() with a null pointer is a no-op. Systems that don't observe that are ancient and no longer relevant. Some PostgreSQL code already required this behavior, so this change does not introduce any new requirements, just makes the code more consistent. Discussion: https://www.postgresql.org/message-id/flat/dac5d2d0-98f5-94d9-8e69-46da2413593d%40enterprisedb.com
* Fix connection handling for DEALLOCATE and DESCRIBE statementsMichael Meskes2021-08-13
| | | | | | | | | | After binding a statement to a connection with DECLARE STATEMENT the connection was still not used for DEALLOCATE and DESCRIBE statements. This patch fixes that, adds a missing warning and cleans up the code. Author: Hayato Kuroda Reviewed-by: Kyotaro Horiguchi, Michael Paquier Discussion: https://postgr.es/m/TYAPR01MB5866BA57688DF2770E2F95C6F5069%40TYAPR01MB5866.jpnprd01.prod.outlook.com
* Rename ecpg's various "extern.h" files to have distinct names.Tom Lane2018-12-01
| | | | | | | | | | | This should reduce confusion, and in particular make it safe to copy typename.c into preproc/ and compile it there. This doesn't affect anything outside ecpg, and particularly not end users, because these files don't get installed; they just exist to share declarations among the .c files of each subdirectory. Discussion: https://postgr.es/m/31364.1543511708@sss.pgh.pa.us
* Phase 3 of pgindent updates.Tom Lane2017-06-21
| | | | | | | | | | | | | | | | | | | | | | | | | Don't move parenthesized lines to the left, even if that means they flow past the right margin. By default, BSD indent lines up statement continuation lines that are within parentheses so that they start just to the right of the preceding left parenthesis. However, traditionally, if that resulted in the continuation line extending to the right of the desired right margin, then indent would push it left just far enough to not overrun the margin, if it could do so without making the continuation line start to the left of the current statement indent. That makes for a weird mix of indentations unless one has been completely rigid about never violating the 80-column limit. This behavior has been pretty universally panned by Postgres developers. Hence, disable it with indent's new -lpl switch, so that parenthesized lines are always lined up with the preceding left paren. This patch is much less interesting than the first round of indent changes, but also bulkier, so I thought it best to separate the effects. Discussion: https://postgr.es/m/E1dAmxK-0006EE-1r@gemulon.postgresql.org Discussion: https://postgr.es/m/30527.1495162840@sss.pgh.pa.us
* Use "%option prefix" to set API names in ecpg's lexer.Tom Lane2016-12-11
| | | | | | | | | | | | | | | | | Clean up some technical debt left behind by commit 72b1e3a21: instead of quickly hacking the name of base_yylex() with a #define, set it properly with "%option prefix". This causes the names of pgc.l's other exported symbols to change as well, so run around and modify the outside references to them as needed. Similarly, make pgc.l's external references to base_yylval use that variable's true name instead of a macro. The reason for doing this now is that the quick-hack solution will fail with future versions of flex, as reported by Дилян Палаузов. Hence, back-patch into 9.6 where the previous commit appeared, since it's likely people will build 9.6 with newer flex versions during its lifetime. Discussion: https://postgr.es/m/d845c1af-e18d-6651-178f-9f08cdf37e10@aegee.org
* pgindent run for 9.6Robert Haas2016-06-09
|
* Fixed some memory leaks in ECPG.Michael Meskes2015-06-12
| | | | Patch by Michael Paquier
* ecpg: Split off mmfatal() from mmerror()Peter Eisentraut2013-11-19
| | | | | This allows decorating mmfatal() with noreturn compiler hints, leading to better diagnostics.
* ecpg: Clean up some const usagePeter Eisentraut2012-03-02
|
* Standardize treatment of strcmp() return valuePeter Eisentraut2011-12-27
| | | | | Always compare the return value to 0, don't use cute tricks like if (!strcmp(...)).
* There is no need to have to identical functions in ecpg thus removing one of ↵Michael Meskes2011-01-09
| | | | them.
* Remove cvs keywords from all files.Magnus Hagander2010-09-20
|
* Zoltan beautified his hidden-variable-patch for ecpg. This also makes sure ↵Michael Meskes2010-04-01
| | | | we get an error message instead of a warning if the variable have different types.
* Applied Zoltan's patch to make ecpg spit out warnings if a local variable ↵Michael Meskes2010-04-01
| | | | hides a global one with the same name.
* ecpg now adds a unique counter to its varchar struct definitions to make ↵Michael Meskes2010-03-09
| | | | these definitions unique, too. It used to use the linenumber but in the rare case of two definitions in one line this was not unique.
* pgindent run for 9.0Bruce Momjian2010-02-26
|
* Applied patch by Boszormenyi Zoltan <zb@cybertec.at> to add out-of-scope ↵Michael Meskes2010-01-26
| | | | cursor support to native mode.
* Applied patch by Boszormenyi Zoltan <zb@cybertec.at> to add sqlda support toMichael Meskes2010-01-05
| | | | ecpg in both native and compatiblity mode.
* Message style reviewPeter Eisentraut2009-01-23
|
* Add localization support to ecpg.Peter Eisentraut2008-05-16
| | | | Author: Euler Taveira de Oliveira <euler@timbira.com>
* Fixed a few minor glitches pointed out by splint.Michael Meskes2007-12-21
|
* Replace some strncpy() by strlcpy().Peter Eisentraut2007-02-07
|
* Add CVS tag lines to files that were lacking them.Bruce Momjian2006-03-11
|
* Cosmetic improvements/code cleanup:Neil Conway2004-10-10
| | | | | | | | | | | - replace some function signatures of the form "some_type foo()" with "some_type foo(void)" - replace a few instances of a literal 0 being used as a NULL pointer; there are more instances of this in the code, but I just fixed a few - in src/backend/utils/mb/wstrncmp.c, replace K&R style function declarations with ANSI style, remove use of 'register' keyword - remove an "extern" modifier that was applied to a function definition (rather than a declaration)
* Pgindent run for 8.0.Bruce Momjian2004-08-29
|
* - Fixed indicator in SET DESCRIPTOR.Michael Meskes2004-07-05
| | | | | - Added special handling of descriptor header information. - Some code cleanup.
* Added SET DESCRIPTOR command.Michael Meskes2004-06-30
| | | | | Note that this still has some bugs. The functionality is there though, it's just a matter of fixing the bugs now. Cleaned up error handling in preprocessor.
* Changed variable parsing so struct[n].attr works.Michael Meskes2003-05-29
|
* ecpg now recognizes named structs/unions. So you don't have to list the ↵Michael Meskes2003-05-22
| | | | whole definition everytime you declare a variable anymore.
* - Added more compatibility functions.Michael Meskes2003-05-14
| | | | | - Accept CPP defines for type definitions. - Do not parse system include files automatically for Informix mode
* Change made to elog:Bruce Momjian2002-03-06
| | | | | | | | | | | | | | | | | | | o Change all current CVS messages of NOTICE to WARNING. We were going to do this just before 7.3 beta but it has to be done now, as you will see below. o Change current INFO messages that should be controlled by client_min_messages to NOTICE. o Force remaining INFO messages, like from EXPLAIN, VACUUM VERBOSE, etc. to always go to the client. o Remove INFO from the client_min_messages options and add NOTICE. Seems we do need three non-ERROR elog levels to handle the various behaviors we need for these messages. Regression passed.
* - Removed space_or_nl and line_end from pgc.l.Michael Meskes2001-12-23
| | | | | - Fixed several bugs concerning arrays of structs including a memory allocation bug.
* committed the missing filesMichael Meskes2001-12-10
|
* pgindent run on all C files. Java run to follow. initdb/regressionBruce Momjian2001-10-25
| | | | tests pass.
* - Synced preproc.y with gram.y.Michael Meskes2001-09-19
| | | | | | - Synced pgc.l with scan.l. - Synced keyword.c. - Include the remaining patches by Christof Petig <christof.petig@wtal.de>.
* - Synced preproc.y with gram.y.Michael Meskes2001-08-19
| | | | - Include some patches by Christof Petig <christof.petig@wtal.de>.
* pgindent run. Make it all clean.Bruce Momjian2001-03-22
|
* Restructure the key include files per recent pghackers discussion: thereTom Lane2001-02-10
| | | | | | | | | | | are now separate files "postgres.h" and "postgres_fe.h", which are meant to be the primary include files for backend .c files and frontend .c files respectively. By default, only include files meant for frontend use are installed into the installation include directory. There is a new make target 'make install-all-headers' that adds the whole content of the src/include tree to the installed fileset, for use by people who want to develop server-side code without keeping the complete source tree on hand. Cleaned up a whole lot of crufty and inconsistent header inclusions.
* Change ET_WARN to ET_NOTICE to match internal codes, leave message asBruce Momjian2000-12-15
| | | | WARNING. Fix German FAQ mention about warning.
* Fixed handling of variables in connect rule.Michael Meskes2000-10-16
|
* *** empty log message ***Michael Meskes2000-09-19
|
* Ye-old pgindent run. Same 4-space tabs.Bruce Momjian2000-04-12
|
* *** empty log message ***Michael Meskes2000-02-23
|
* *** empty log message ***Michael Meskes2000-02-22
|
* *** empty log message ***Michael Meskes2000-02-18
|
* *** empty log message ***Michael Meskes2000-02-17