1999-07-20 04:44:09 +02:00
|
|
|
#
|
2000-07-13 18:07:14 +02:00
|
|
|
# Makefile for utils/adt
|
1999-07-20 04:44:09 +02:00
|
|
|
#
|
2010-09-20 22:08:53 +02:00
|
|
|
# src/backend/utils/adt/Makefile
|
1999-07-20 04:44:09 +02:00
|
|
|
#
|
|
|
|
|
2000-07-13 18:07:14 +02:00
|
|
|
subdir = src/backend/utils/adt
|
|
|
|
top_builddir = ../../../..
|
2000-08-31 18:12:35 +02:00
|
|
|
include $(top_builddir)/src/Makefile.global
|
1999-07-20 04:44:09 +02:00
|
|
|
|
2014-02-06 18:11:49 +01:00
|
|
|
# keep this list arranged alphabetically or it gets to be a mess
|
Support "expanded" objects, particularly arrays, for better performance.
This patch introduces the ability for complex datatypes to have an
in-memory representation that is different from their on-disk format.
On-disk formats are typically optimized for minimal size, and in any case
they can't contain pointers, so they are often not well-suited for
computation. Now a datatype can invent an "expanded" in-memory format
that is better suited for its operations, and then pass that around among
the C functions that operate on the datatype. There are also provisions
(rudimentary as yet) to allow an expanded object to be modified in-place
under suitable conditions, so that operations like assignment to an element
of an array need not involve copying the entire array.
The initial application for this feature is arrays, but it is not hard
to foresee using it for other container types like JSON, XML and hstore.
I have hopes that it will be useful to PostGIS as well.
In this initial implementation, a few heuristics have been hard-wired
into plpgsql to improve performance for arrays that are stored in
plpgsql variables. We would like to generalize those hacks so that
other datatypes can obtain similar improvements, but figuring out some
appropriate APIs is left as a task for future work. (The heuristics
themselves are probably not optimal yet, either, as they sometimes
force expansion of arrays that would be better left alone.)
Preliminary performance testing shows impressive speed gains for plpgsql
functions that do element-by-element access or update of large arrays.
There are other cases that get a little slower, as a result of added array
format conversions; but we can hope to improve anything that's annoyingly
bad. In any case most applications should see a net win.
Tom Lane, reviewed by Andres Freund
2015-05-14 18:08:40 +02:00
|
|
|
OBJS = acl.o arrayfuncs.o array_expanded.o array_selfuncs.o \
|
|
|
|
array_typanalyze.o array_userfuncs.o arrayutils.o ascii.o \
|
|
|
|
bool.o cash.o char.o date.o datetime.o datum.o dbsize.o domains.o \
|
|
|
|
encode.o enum.o expandeddatum.o \
|
|
|
|
float.o format_type.o formatting.o genfile.o \
|
2016-03-30 17:42:36 +02:00
|
|
|
geo_ops.o geo_selfuncs.o geo_spgist.o inet_cidr_ntop.o inet_net_pton.o \
|
|
|
|
int.o int8.o json.o jsonb.o jsonb_gin.o jsonb_op.o jsonb_util.o \
|
Introduce jsonb, a structured format for storing json.
The new format accepts exactly the same data as the json type. However, it is
stored in a format that does not require reparsing the orgiginal text in order
to process it, making it much more suitable for indexing and other operations.
Insignificant whitespace is discarded, and the order of object keys is not
preserved. Neither are duplicate object keys kept - the later value for a given
key is the only one stored.
The new type has all the functions and operators that the json type has,
with the exception of the json generation functions (to_json, json_agg etc.)
and with identical semantics. In addition, there are operator classes for
hash and btree indexing, and two classes for GIN indexing, that have no
equivalent in the json type.
This feature grew out of previous work by Oleg Bartunov and Teodor Sigaev, which
was intended to provide similar facilities to a nested hstore type, but which
in the end proved to have some significant compatibility issues.
Authors: Oleg Bartunov, Teodor Sigaev, Peter Geoghegan and Andrew Dunstan.
Review: Andres Freund
2014-03-23 21:40:19 +01:00
|
|
|
jsonfuncs.o like.o lockfuncs.o mac.o misc.o nabstime.o name.o \
|
Add an in-core GiST index opclass for inet/cidr types.
This operator class can accelerate subnet/supernet tests as well as
btree-equivalent ordered comparisons. It also handles a new network
operator inet && inet (overlaps, a/k/a "is supernet or subnet of"),
which is expected to be useful in exclusion constraints.
Ideally this opclass would be the default for GiST with inet/cidr data,
but we can't mark it that way until we figure out how to do a more or
less graceful transition from the current situation, in which the
really-completely-bogus inet/cidr opclasses in contrib/btree_gist are
marked as default. Having the opclass in core and not default is better
than not having it at all, though.
While at it, add new documentation sections to allow us to officially
document GiST/GIN/SP-GiST opclasses, something there was never a clear
place to do before. I filled these in with some simple tables listing
the existing opclasses and the operators they support, but there's
certainly scope to put more information there.
Emre Hasegeli, reviewed by Andreas Karlsson, further hacking by me
2014-04-08 21:46:14 +02:00
|
|
|
network.o network_gist.o network_selfuncs.o \
|
|
|
|
numeric.o numutils.o oid.o oracle_compat.o \
|
2015-03-11 03:33:25 +01:00
|
|
|
orderedsetaggs.o pg_locale.o pg_lsn.o pg_upgrade_support.o \
|
|
|
|
pgstatfuncs.o \
|
2015-02-09 07:15:24 +01:00
|
|
|
pseudotypes.o quote.o rangetypes.o rangetypes_gist.o \
|
2014-02-06 18:11:49 +01:00
|
|
|
rangetypes_selfuncs.o rangetypes_spgist.o rangetypes_typanalyze.o \
|
|
|
|
regexp.o regproc.o ri_triggers.o rowtypes.o ruleutils.o \
|
|
|
|
selfuncs.o tid.o timestamp.o trigfuncs.o \
|
2007-08-21 03:11:32 +02:00
|
|
|
tsginidx.o tsgistidx.o tsquery.o tsquery_cleanup.o tsquery_gist.o \
|
|
|
|
tsquery_op.o tsquery_rewrite.o tsquery_util.o tsrank.o \
|
2007-10-14 01:06:28 +02:00
|
|
|
tsvector.o tsvector_op.o tsvector_parser.o \
|
2014-02-06 18:11:49 +01:00
|
|
|
txid.o uuid.o varbit.o varchar.o varlena.o version.o \
|
|
|
|
windowfuncs.o xid.o xml.o
|
1999-07-20 04:44:09 +02:00
|
|
|
|
2001-10-04 06:13:40 +02:00
|
|
|
like.o: like.c like_match.c
|
|
|
|
|
2014-11-13 18:25:10 +01:00
|
|
|
varlena.o: varlena.c levenshtein.c
|
|
|
|
|
2008-02-19 11:30:09 +01:00
|
|
|
include $(top_srcdir)/src/backend/common.mk
|