summaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/xml.c
AgeCommit message (Collapse)Author
2007-10-13Guard against possible double free during error escape from XMLTom Lane
functions. Patch for the reported issue from Kris Jurka, some other potential trouble spots plugged by Tom.
2007-10-13Fix the inadvertent libpq ABI breakage discovered by Martin Pitt: theTom Lane
renumbering of encoding IDs done between 8.2 and 8.3 turns out to break 8.2 initdb and psql if they are run with an 8.3beta1 libpq.so. For the moment we can rearrange the order of enum pg_enc to keep the same number for everything except PG_JOHAB, which isn't a problem since there are no direct references to it in the 8.2 programs anyway. (This does force initdb unfortunately.) Going forward, we want to fix things so that encoding IDs can be changed without an ABI break, and this commit includes the changes needed to allow libpq's encoding IDs to be treated as fully independent of the backend's. The main issue is that libpq clients should not include pg_wchar.h or otherwise assume they know the specific values of libpq's encoding IDs, since they might encounter version skew between pg_wchar.h and the libpq.so they are using. To fix, have libpq officially export functions needed for encoding name<=>ID conversion and validity checking; it was doing this anyway unofficially. It's still the case that we can't renumber backend encoding IDs until the next bump in libpq's major version number, since doing so will break the 8.2-era client programs. However the code is now prepared to avoid this type of problem in future. Note that initdb is no longer a libpq client: we just pull in the two source files we need directly. The patch also fixes a few places that were being sloppy about checking for an unrecognized encoding name.
2007-09-23Fix bugs in XML binary I/O functions. Heikki and TomTom Lane
2007-07-13Fix map_sql_typecoll_to_xmlschema_types() to not fail on droppedTom Lane
columns, per my gripe earlier today. Make it look a bit less like someone's first effort at backend coding.
2007-07-12Compute max and min int8 values using unsigned arithmetic, in hopes ofTom Lane
suppressing Sun Studio compiler warnings. Per Stefan.
2007-06-06Fix up text concatenation so that it accepts all the reasonable cases thatTom Lane
were accepted by prior Postgres releases. This takes care of the loose end left by the preceding patch to downgrade implicit casts-to-text. To avoid breaking desirable behavior for array concatenation, introduce a new polymorphic pseudo-type "anynonarray" --- the added concatenation operators are actually text || anynonarray and anynonarray || text.
2007-05-21XPath fixes:Peter Eisentraut
- Function renamed to "xpath". - Function is now strict, per discussion. - Return empty array in case when XPath expression detects nothing (previously, NULL was returned in such case), per discussion. - (bugfix) Work with fragments with prologue: select xpath('/a', '<?xml version="1.0"?><a /><b />'); // now XML datum is always wrapped with dummy <x>...</x>, XML prologue simply goes away (if any). - Some cleanup. Nikolay Samokhvalov Some code cleanup and documentation work by myself.
2007-04-06Support varlena fields with single-byte headers and unaligned storage.Tom Lane
This commit breaks any code that assumes that the mere act of forming a tuple (without writing it to disk) does not "toast" any fields. While all available regression tests pass, I'm not totally sure that we've fixed every nook and cranny, especially in contrib. Greg Stark with some help from Tom Lane
2007-04-05Update XML error message text for missing libxml; update regressionBruce Momjian
output to match.
2007-04-05Improve documentation/warning when --with-libxml is not used in theBruce Momjian
installation.
2007-04-02Support enum data types. Along the way, use macros for the values ofTom Lane
pg_type.typtype whereever practical. Tom Dunstan, with some kibitzing from Tom Lane.
2007-04-01Mapping schemas and databases to XML and XML Schema.Peter Eisentraut
Refactor and document the remaining mapping code.
2007-03-22Commit newest version of xmlpath().Bruce Momjian
Nikolay Samokhvalov
2007-03-22Add xmlpath() to evaluate XPath expressions, with namespaces support.Bruce Momjian
Nikolay Samokhvalov
2007-03-15Make use of plancache module for SPI plans. In particular, since plpgsqlTom Lane
uses SPI plans, this finally fixes the ancient gotcha that you can't drop and recreate a temp table used by a plpgsql function. Along the way, clean up SPI's API a little bit by declaring SPI plan pointers as "SPIPlanPtr" instead of "void *". This is cosmetic but helps to forestall simple programming mistakes. (I have changed some but not all of the callers to match; there are still some "void *"'s in contrib and the PL's. This is intentional so that we can see if anyone's compiler complains about it.)
2007-03-03Add resetStringInfo(), which clears the content of a StringInfo, andNeil Conway
fixup various places in the tree that were clearing a StringInfo by hand. Making this function a part of the API simplifies client code slightly, and avoids needlessly peeking inside the StringInfo interface.
2007-03-01Fix date/time formats for XML Schema output.Peter Eisentraut
Pavel Stehule
2007-02-27Replace direct assignments to VARATT_SIZEP(x) with SET_VARSIZE(x, len).Tom Lane
Get rid of VARATT_SIZE and VARATT_DATA, which were simply redundant with VARSIZE and VARDATA, and as a consequence almost no code was using the longer names. Rename the length fields of struct varlena and various derived structures to catch anyplace that was accessing them directly; and clean up various places so caught. In itself this patch doesn't change any behavior at all, but it is necessary infrastructure if we hope to play any games with the representation of varlena headers. Greg Stark and Tom Lane
2007-02-16Better fix for determining minimum and maximum int64 values that doesn'tPeter Eisentraut
require stdint.h and works for "busted" int64.
2007-02-16Add stdint.h includePeter Eisentraut
2007-02-16Functions for mapping table data and table schemas to XML (a.k.a. XML export)Peter Eisentraut
2007-02-13Un-break build on ANSI compilers (like msvc) by moving Assert to positionMagnus Hagander
after variable declarations.
2007-02-11Add support for optionally escaping periods when converting SQL identifiersPeter Eisentraut
to XML names, which will be required for supporting XML export.
2007-02-10Add proper mapping of boolean type data to XML Schema.Peter Eisentraut
2007-02-03Implement XMLSERIALIZE for real. Analogously, make the xml to text castPeter Eisentraut
observe the xmloption. Reorganize the representation of the XML option in the parse tree and the API to make it easier to manage and understand. Add regression tests for parsing back XML expressions.
2007-01-27Reactivate libxml memory management via palloc, now that I think I'vePeter Eisentraut
classified the conditions under which this is safe to do (see source code comment).
2007-01-27Add trailing zero byte in Unicode codepoint conversion.Peter Eisentraut
2007-01-25Various fixes in the logic of XML functions:Peter Eisentraut
- Add new SQL command SET XML OPTION (also available via regular GUC) to control the DOCUMENT vs. CONTENT option in implicit parsing and serialization operations. - Subtle corrections in the handling of the standalone property in xmlroot(). - Allow xmlroot() to work on content fragments. - Subtle corrections in the handling of the version property in xmlconcat(). - Code refactoring for producing XML declarations.
2007-01-23Simplify handling of XML error messages: Just use the string provided byPeter Eisentraut
libxml as the detail message. As per <http://archives.postgresql.org/pgsql-hackers/2006-12/msg01087.php>. For converting error codes to messages, we only need to cover those codes that we raise ourselves now.
2007-01-20Fix xmlconcat by properly merging the XML declarations. Add aggregatePeter Eisentraut
function xmlagg.
2007-01-19Add support for converting binary values (i.e. bytea) into xml values,Peter Eisentraut
with new GUC parameter "xmlbinary" that controls the output encoding, as per SQL/XML standard.
2007-01-18Clean up encoding issues in the xml type: In text mode, encodingPeter Eisentraut
declarations are ignored and removed, in binary mode they are honored as specified by the XML standard.
2007-01-14Add support for xmlval IS DOCUMENT expression.Peter Eisentraut
2007-01-12Use XML output escaping also in XMLFOREST.Peter Eisentraut
2007-01-12Allow for arbitrary data types as content in XMLELEMENT. The originalPeter Eisentraut
coercion to type xml was a mistake. Escape values so they are valid XML character data.
2007-01-10Use libxml's xmlwriter API for producing XML elements, instead of doingPeter Eisentraut
our own printing dance. This does a better job of quoting and escaping the values.
2007-01-07Some fine-tuning of xmlpi in corner cases:Peter Eisentraut
- correct error codes - do syntax checks in correct order - strip leading spaces of argument
2007-01-07Allow XML fragment to contain a XML declaration. For that, we need a smallPeter Eisentraut
hand-crafted parser for the XML declaration, because libxml doesn't seem to allow this.
2007-01-06Replace xmlroot with a properly functioning version that parses the value,Peter Eisentraut
sets the items, and serializes the value back (rather than adding an arbitrary number of XML preambles as before). The libxml memory management via palloc had to be disabled because it crashes when libxml tries to access memory that was helpfully freed earlier by PostgreSQL. This needs further thought.
2007-01-05Update CVS HEAD for 2007 copyright. Back branches are typically notBruce Momjian
back-stamped for this.
2006-12-29Fix multiple breakages in last XML patch.Tom Lane
2006-12-29De-escape XML names when reverse-compiling XML expressions.Peter Eisentraut
2006-12-28Add send and recv functions for xml type.Peter Eisentraut
2006-12-28Handle content and document options in xmlparse() correctly.Peter Eisentraut
2006-12-24Bring some order and sanity to error handling in the xml patch.Tom Lane
Use a TRY block instead of (inadequate) ad-hoc coding to ensure that libxml is cleaned up after a failure. Report the intended SQLCODE instead of defaulting to XX000. Avoid risking use of a dangling pointer by keeping the persistent error buffer in TopMemoryContext. Be less trusting that error messages don't contain %. This patch doesn't do anything about changing the way the messages are put together --- this is just about mechanism.
2006-12-24Fix machine-dependent crash in sqlchar_to_unicode(). Get rid ofTom Lane
bletcherous and unsafe manipulation of global encoding setting. Clean up libxml reporting mechanism a bit (it still looks like a dangling-pointer crash waiting to happen, though, not to mention being far less than sane from a localization standpoint).
2006-12-24Code review for XML patch. Instill a bit of sanity in the location ofTom Lane
the XmlExpr code in various lists, use a representation that has some hope of reverse-listing correctly (though it's still a de-escaping function shy of correctness), generally try to make it look more like Postgres coding conventions.
2006-12-23Suppress various compiler warnings in new xml code.Tom Lane
2006-12-21Initial SQL/XML support: xml data type and initial set of functions.Peter Eisentraut