Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds
Arrow up icon
GO TO TOP
PostgreSQL Server Programming

You're reading from   PostgreSQL Server Programming Take your skills with PostgreSQL to a whole new level with this fascinating guide to server programming. A step by step approach with illuminating examples will educate you in the full range of possibilities.

Arrow left icon
Product type Paperback
Published in Jun 2013
Publisher Packt
ISBN-13 9781849516983
Length 264 pages
Edition 1st Edition
Arrow right icon
Toc

Table of Contents (17) Chapters Close

PostgreSQL Server Programming
Credits
About the Authors
About the Reviewer
www.PacktPub.com
Preface
1. What Is a PostgreSQL Server? 2. Server Programming Environment FREE CHAPTER 3. Your First PL/pgSQL Function 4. Returning Structured Data 5. PL/pgSQL Trigger Functions 6. Debugging PL/pgSQL 7. Using Unrestricted Languages 8. Writing Advanced Functions in C 9. Scaling Your Database with PL/Proxy 10. Publishing Your Code as PostgreSQL Extensions Index

Index

A

  • acquisition cost / Cost of acquisition
  • add(int, int)
    • functionality, adding / Adding functionality to add(int, int)
    • NULL arguments / Smart handling of NULL arguments
    • multiple arguments, working with / Working with any number of arguments
  • add_ab(PG_FUNCTION_ARGS) / add_func.c
  • add_func.c
    • about / add_func.c
    • #include *postgres.h* / add_func.c
    • #include *fmgr.h* / add_func.c
    • PG_MODULE_MAGIC; / add_func.c
    • PG_FUNCTION_INFO_V1(add_ab); / add_func.c
    • Datum / add_func.c
    • add_ab(PG_FUNCTION_ARGS) / add_func.c
  • add_func.sql.in / add_func.sql.in
  • add_one() function / A simple function
  • AFTER trigger / Simple "Hey, I'm called" trigger, Disallowing TRUNCATE, Visibility
  • ALTER EXTENSION ADD command / When to create an extension
  • ANY parameter / Other parameters
  • application design
    • about / Application design
    • databases, drawbacks / Databases are considered harmful
    • encapsulation / Encapsulation
    • data locality / Data locality
  • arrays
    • about / Sets and arrays
  • assert
    • using / Using assert
  • auditing
    • ways / Auditing changes
    • about / Auditing changes
  • audit log
    • updating / Immutable fields trigger
  • audit trigger
    • creating / The audit trigger

B

  • backend
    • synchronizing between / Synchronizing between backends
  • BEFORE trigger / Disallowing DELETE, Disallowing TRUNCATE, Visibility

C

  • .control file
    • about / The .control file
    • documentation, URL / The .control file
  • C
    • additional resources / Additional resources for C
  • caching / On caching
  • cancel trigger / Disallowing DELETE
  • cancel_op() / Disallowing TRUNCATE
  • C code, writing
    • guidelines / Basic guidelines for writing C code
    • memory allocation / Memory allocation
  • C function
    • add_func.c / add_func.c
    • makefile function / Makefile
    • CREATE FUNCTION add(int, int) / CREATE FUNCTION add(int, int)
    • add_func.sql.in / add_func.sql.in
    • writing / Summary for writing a C function
    • error, reporting from / Error reporting from C functions
    • URL / Additional resources for C
  • C function, error reporting
    • Error, stating / "Error" states that are not errors
    • messages sent, to client / When are messages sent to the client
  • changestamp() trigger function / Immutable fields trigger
  • CLUSTER statement / CONNECT, CLUSTER, and RUN ON
  • commit
    • about / Doing something at commit/rollback
  • community / Community
  • Concurrent Versions System (CVS) / Getting the debugger installed
  • conditional expression
    • example / Trigger on specific field changes
  • conditional expressions
    • about / Conditional expressions
    • URL / Conditional expressions
    • loops, with counters / Loops with counters
    • query results, looping / Looping through query results
    • PERFORM command versus SELECT command / PERFORM versus SELECT
  • conditional trigger / Conditional trigger
  • CONNECT statement / CONNECT, CLUSTER, and RUN ON
  • connect string / CONNECT, CLUSTER, and RUN ON
  • context managers
    • URL / Handling exceptions
  • Coordinated Universal Time (UTC) / The audit trigger
  • Cost / More control
  • CREATE command / Functions returning a record
  • CREATE FUNCTION / add_func.sql.in
  • CREATE FUNCTION add(int, int) / CREATE FUNCTION add(int, int)
  • CREATE FUNCTION statement / CREATE FUNCTION add(int, int)
  • CREATE TABLE statement / Returning a record
  • CREATE TYPE command / Returning rows from a function
  • ctags
    • URL / Additional resources for C
  • cursors
    • returning / Returning cursors
    • about / Returning cursors
    • returned from another function, iterating over / Iterating over cursors returned from another function
    • returned by functions, wrapup / Wrap up of functions returning a cursor(s)
    • advantages / Wrap up of functions returning a cursor(s)
    • disadvantages / Wrap up of functions returning a cursor(s)

D

  • data
    • comparing, operators used / Data comparisons using operators
    • cleaning / Data cleaning
    • changes, visibility / Visibility of data changes
    • partitioning, across multiple servers / Data partitioning across multiple servers
    • splitting / Splitting the data
    • distributing / Distribution of data
    • moving, from single to partitioned database / Moving data from the single to the partitioned database
  • data abstraction layer
    • about / Databases are considered harmful
  • database
    • changes, capturing / Fast capturing of database changes
  • database, scaling
    • single-server chat / Simple single-server chat
    • tables, splitting over multiple databases / Dealing with success – splitting tables over multiple databases
    • data, moving from single to partitioned database / Moving data from the single to the partitioned database
  • database-backed systems, growing
    • ways / What expansion plans work and when
    • bigger server, moving to / Moving to a bigger server
    • Master-slave replication / Master-slave replication – moving reads to slave
    • Multi-master replication / Multimaster replication
  • database_to_xml(...) function / XML data type and returning data as XML from functions
  • data locality
    • about / Data locality
    • limitations / Data locality
  • Data Management Language (DML) / Simple "Hey, I'm called" trigger
  • data manipulation code
    • advantages / Wrap up – why program in the server?, Simple ways to tighten security
  • data type
    • conversions / Data type conversions
  • data types, complex
    • XML / Complex data types for modern world – XML and JSON
    • JSON / Complex data types for modern world – XML and JSON
  • Datum
    • about / add_func.c, Interlude – what is Datum
  • datums pointer / Working with any number of arguments
  • DBAPI 2 / Running queries in the database
  • debugging
    • manual debugging / ''Manual'' debugging with RAISE NOTICE
    • visual debugging / Visual debugging
  • debugging, manual
    • with RAISE NOTICE / ''Manual'' debugging with RAISE NOTICE
    • exceptions, throwing / Throwing exceptions
    • file, logging to / Logging to a file
  • debugging, visual
    • debugger, installing / Getting the debugger installed
    • pgAdmin3, installing / Installing pgAdmin3
    • debugger, using / Using the debugger
  • DELETE trigger
    • about / Simple "Hey, I'm called" trigger
    • disallowing / Disallowing DELETE
  • dirty read / Transactions
  • DO syntax / Constructing queries
  • DRY / DRY – don't repeat yourself

E

  • e-mail
    • sending / Sending an e-mail
  • encapsulation
    • about / Encapsulation
  • ereport() / Error reporting from C functions, When are messages sent to the client
  • error codes
    • URL / Throwing exceptions
  • error handling / General error reporting and error handling
  • error reporting / General error reporting and error handling
    • from C function / Error reporting from C functions
    • URL / When are messages sent to the client
  • error_trap_report function / Throwing exceptions
  • event_time_utc / The audit trigger
  • exceptions
    • handling / Handling exceptions
  • execute() method / Functions returning a record
  • EXECUTE statement / Looping through query results
  • extension
    • creating / When to create an extension
    • OpenFTS, type / When to create an extension
    • PostGIS,type / When to create an extension
    • URL / When to create an extension
    • unpackaged / Unpackaged extensions
    • versions / Extension versions
    • .control file / The .control file
    • building / Building an extension
    • installing / Installing an extension
    • publishing / Publishing your extension
    • project, creating / Creating an extension project the easy way
    • code, writing / Writing your extension code
    • installing, from PGXN / Installing an extension from PGXN
  • extension, altering
    • URL / When to create an extension
  • extension, publishing
    • PostgreSQL Extension Network / Introduction to the PostgreSQL Extension Network
    • signing up / Signing up to publish your extension
    • extension project, creating / Creating an extension project the easy way
    • metadata, providing / Providing the metadata about the extension
    • extension code, writing / Writing your extension code
    • package, creating / Creating the package
    • package, submitting to PGXN / Submitting the package to PGXN

F

  • file
    • logging / A log trigger
  • files
    • including / Include files
  • file type / A log trigger
  • flatten_application_settings() function / Acting on function results
  • FOR EACH ROW trigger / Simple "Hey, I'm called" trigger
  • format_us_address() function / ''Manual'' debugging with RAISE NOTICE
  • function
    • about / User-defined functions (UDF)
    • arguments, accessing / Accessing function arguments
    • results / Acting on function results
    • views based / Functions based on views
    • record, returning / Functions returning a record
    • table functions / Table functions
    • progress tracking, plpy.notice() used / Using plpy.notice() for tracking the function's progress
    • used, for configuring PL/Proxy cluster / Configuring PL/Proxy cluster using functions
  • function overloading / User-defined functions (UDF)
  • function parameter / Accessing function arguments

G

  • generate_series() function / Simple single-server chat
  • get_new_messages() function / Simple single-server chat
  • get_user_email() / SELECT and TARGET
  • GIN (General Inverted Index) / Type extensibility

I

  • #include *fmgr.h* / add_func.c
  • #include *postgres.h* / add_func.c
  • immutable fields trigger / Immutable fields trigger
  • IMMUTABLE function / Visibility
  • indexes
    • adding, for retrieving messages / Simple single-server chat
  • INFO / "Error" states that are not errors
  • INOUT parameters / OUT parameters
  • INSTEAD OF trigger / Visibility
  • integrity checks
    • PL/pgSQL, using / Using PL/pgSQL for integrity checks

J

  • JSON
    • data, returning / Returning data in the JSON format

K

  • KISS / KISS – keep it simple stupid
  • KNN / Type extensibility

L

  • licensing / Licensing
  • LOG (and COMMERROR) / "Error" states that are not errors
  • log function / A log trigger
  • log_min_messages / Logging to a file
  • looping syntax
    • URL / Loops with counters
  • loops
    • with counters / Loops with counters
  • low cost of failure
    • about / Cost of acquisition

M

  • Makefile file / Building an extension
  • Makefile function / Makefile, add_func.sql.in
  • Master-slave replication / Master-slave replication – moving reads to slave
  • memory allocation
    • about / Memory allocation
    • palloc(), using / Use palloc() and pfree()
    • pfree(), using / Use palloc() and pfree()
    • structures, zero-filling / Zero-fill the structures
    • files, including / Include files
    • public symbol names / Public symbol names
  • memset() / Zero-fill the structures
  • metadata
    • providing, for extension / Providing the metadata about the extension
  • mid function / Structure of a PL/pgSQL function, Accessing function arguments
  • Multi-master replication
    • about / Multimaster replication
  • myfunc function / Returning cursors
  • mysetfunc(); function / Returning cursors
  • MySQL
    • URL / Predictability

N

  • NEW record, modifying
    • trigger, timestamping / Timestamping trigger
  • NEW record trigger
    • modifying / Modifying the NEW record
  • NOTICE / "Error" states that are not errors
  • NULL propagation / ''Manual'' debugging with RAISE NOTICE

O

  • object identifier (OID) / Writing trigger functions in PL/Python
  • OLD, NEW variable / Variables passed to the PL/pgSQL TRIGGER function
  • OpenFTS
    • about / When to create an extension
  • operators
    • used, for data comparisons / Data comparisons using operators
  • OUT parameters / OUT parameters

P

  • package
    • creating / Creating the package
    • submitting, to PGXN / Submitting the package to PGXN
  • palloc()
    • using / Use palloc() and pfree()
    • about / Returning a set of records
  • part_func() / CONNECT, CLUSTER, and RUN ON
  • Pentaho Data Integration (kettle) / Procedural languages
  • Pentaho Report Server / Procedural languages
  • PERFORM command
    • versus SELECT command / PERFORM versus SELECT
  • pfree()
    • using / Use palloc() and pfree()
    • about / Returning a set of records
  • pgAdmin3
    • installing / Installing pgAdmin3
  • PgAdmin3 / Procedural languages, Transactions
  • pgfoundry
    • URL / Additional resources for C
    • about / Additional resources for C
  • pgFoundry
    • URL / Visual debugging
  • PGXN
    • package, submitting / Submitting the package to PGXN
    • URL / Submitting the package to PGXN
    • extension, installing from / Installing an extension from PGXN
  • pgxn-utils utility / Creating an extension project the easy way
  • PG_FUNCTION_INFO_V1(add_ab); / add_func.c
  • PG_MODULE_MAGIC; / add_func.c
  • php5-postgesql / Procedural languages
  • PL/pgSQL
    • used, for integrity checks / Using PL/pgSQL for integrity checks
    • about / Using PL/pgSQL for integrity checks, Why PL/pgSQL?
    • disadvantages / Why PL/pgSQL?
    • URL / Why PL/pgSQL?
    • advantages / Why PL/pgSQL?
    • cursors, URL / Returning cursors
  • PL/pgSQL debugger
    • about / Visual debugging
    • installing / Getting the debugger installed
    • using / Using the debugger
    • advantages / Advantages of the debugger
    • disadvantages / Disadvantages of the debugger
  • PL/pgSQL function
    • structure / Structure of a PL/pgSQL function
    • arguments, accessing / Accessing function arguments
  • PL/pgSQL trigger function
    • variables, passed / Variables passed to the PL/pgSQL TRIGGER function
  • PL/Proxy
    • installing / Installing PL/Proxy
    • syntax / PL/Proxy language syntax
    • CONNECT statement / CONNECT, CLUSTER, and RUN ON
    • CLUSTER statement / CONNECT, CLUSTER, and RUN ON
    • RUN ON statement / CONNECT, CLUSTER, and RUN ON
    • SELECT statement / SELECT and TARGET
    • TARGET statement / SELECT and TARGET
    • SPLIT statement / SPLIT – distributing array elements over several partitions
    • data, distributing / Distribution of data
  • PL/Proxy cluster
    • configuring, functions used / Configuring PL/Proxy cluster using functions
    • configuring, SQL/MED used / Configuring PL/Proxy cluster using SQL/MED
  • PL/Python
    • uses / Why PL/Python?
    • about / Quick introduction to PL/Python
    • function, creating / A minimal PL/Python function
    • data type conversions / Data type conversions
    • documentation, URL / Data type conversions
    • functions, writing / Writing simple functions in PL/Python
    • simple function / A simple function
    • record, returning by function / Functions returning a record
    • table functions / Table functions
    • queries, running in database / Running queries in the database
    • trigger functions, writing / Writing trigger functions in PL/Python
    • queries, constructing / Constructing queries
    • exceptions, handling / Handling exceptions
    • atomicity / Atomicity in Python
    • debugging / Debugging PL/Python
  • PL/Python, debugging
    • function progress tracking, plpy.notice() used / Using plpy.notice() for tracking the function's progress
    • assert, using / Using assert
    • sys.stdout, redirecting / Redirecting sys.stdout and sys.stderr
    • sys.stderr, redirecting / Redirecting sys.stdout and sys.stderr
  • platform compatibility / Platform compatibility
  • plproxy.get_cluster_partitions() / Configuring PL/Proxy cluster using SQL/MED
  • plproxy.get_cluster_version(cluster_name) function / Configuring PL/Proxy cluster using functions
  • plpy.execute() / Running simple queries, Handling exceptions
  • plpy.execute(...) function / Debugging PL/Python
  • plpy.notice()
    • used, for tracking function's progress / Using plpy.notice() for tracking the function's progress
    • about / Using plpy.notice() for tracking the function's progress
  • plpy.prepare() / Running simple queries, Handling exceptions
  • plpy.prepare() function / Debugging PL/Python
  • plpy.quote_ident(name) function / Constructing queries
  • plpy.quote_literal() method / Functions returning a record
  • plpy.quote_literal(litvalue) function / Constructing queries
  • plpy.quote_nullable(value_or_none) function / Constructing queries
  • plpy.subtransaction() / Handling exceptions
  • plugins / Procedural languages
  • PostGIS
    • about / When to create an extension
  • PostgreSQL
    • about / Using PL/pgSQL for integrity checks, Availability of developers
    • expanded display, switching to / Switching to the expanded display
    • acquisition cost / Cost of acquisition
    • developers, availability / Availability of developers
    • licensing / Licensing
    • predictability / Predictability
    • URL / Predictability
    • community / Community
    • procedural languages / Procedural languages
  • PostgreSQL, products
    • Pentaho Data Integration (kettle) / Procedural languages
    • Pentaho Report Server / Procedural languages
    • PgAdmin3 / Procedural languages
    • php5-postgesql / Procedural languages
    • Qcubed / Procedural languages
    • Yii / Procedural languages
    • Talend / Procedural languages
    • BIRT / Procedural languages
    • psycopg2 / Procedural languages
  • postgresql.conf file
    • about / Additional resources for C
    • URL / Additional resources for C
  • PostgreSQL back-end coding
    • guidelines / Basic guidelines for writing C code
  • PostgreSQL Extension Network
    • URL / When to create an extension, Introduction to the PostgreSQL Extension Network
    • about / Introduction to the PostgreSQL Extension Network
  • PostgreSQL functions
    • C function, SPI used / Sample C function using SPI
    • data changes, visibility / Visibility of data changes
    • SPI_* functions / More info on SPI_* functions
  • PostgreSQL internals
    • URL / Additional resources for C
  • PostgreSQL license
    • URL / Publishing your extension
  • PostgreSQL server
    • server programming / Why program in the server?
    • code examples / About this book's code examples
    • data management, with triggers / Managing related data with triggers
    • auditing, changes / Auditing changes
    • data cleaning / Data cleaning
    • custom sort orders / Custom sort orders
    • caching / On caching
  • predictability / Predictability
  • prepare() method / Functions returning a record
  • procedural languages
    • platform compatibility / Platform compatibility
    • application design / Application design
  • psql command line client / Transactions
  • psycopg2 / Procedural languages
  • public symbol names / Public symbol names
  • Python
    • atomicity / Atomicity in Python
  • Python Database API Specification v2.0 / Running queries in the database
  • Python Imaging Library (PIL) / Generating thumbnails when saving images

Q

  • Qcubed / Procedural languages
  • queries
    • running, in database / Running queries in the database
    • simple queries, running / Running simple queries
    • prepared queries, using / Using prepared queries
    • prepared queries, caching / Caching prepared queries
    • constructing / Constructing queries
    • running / Running queries and calling PostgreSQL functions
  • query results
    • looping / Looping through query results

R

  • RAISE command / Throwing exceptions
  • RAISE NOTICE
    • debugging, manual / ''Manual'' debugging with RAISE NOTICE
    • advantages / Advantages of RAISE NOTICE
    • about / Advantages of RAISE NOTICE
    • disadvantages / Disadvantages of RAISE NOTICE
  • RAISE statement
    • syntax, URL / Advantages of RAISE NOTICE
  • range / Table functions
  • Read Committed / Transactions
  • record
    • returning / Returning a record, Returning records
  • record, handling
    • as arguments / Handling records as arguments or returned values
    • as returned values / Handling records as arguments or returned values
    • single record, returning / Returning a single tuple of a complex type
    • fields, extracting from argument tuple / Extracting fields from an argument tuple
    • return tuple, constructing / Constructing a return tuple
    • Datum / Interlude – what is Datum
    • record sets, returning / Returning a set of records
  • record sets
    • returning / Returning a set of records
  • refcursor / Returning cursors
  • replication
    • Master-slave replication / Master-slave replication – moving reads to slave
    • Multi-master replication / Multimaster replication
  • RETURN function / Returning a set of integers
  • RETURN SETOF variants
    • SETOF <type> / Summary of RETURN SETOF variants
    • SETOF <table/view> / Summary of RETURN SETOF variants
    • SETOF RECORD / Summary of RETURN SETOF variants
    • TABLE (...) / Summary of RETURN SETOF variants
  • RETURNS TABLE
    • using / Using RETURNS TABLE
  • RETURNS TABLE(...) function / Using RETURNS TABLE
  • RETURN statement / Returning a set of integers
  • reversed_vowels(word) / Custom sort orders
  • rollback
    • about / Doing something at commit/rollback
  • ROLLBACK command / A log trigger
  • running_queries(int, int) function / Functions based on views
  • RUN ON ALL function / CONNECT, CLUSTER, and RUN ON
  • RUN ON ALL statement
    • uses / CONNECT, CLUSTER, and RUN ON
  • RUN ON ANY statement / CONNECT, CLUSTER, and RUN ON
  • RUN ON function / Distribution of data
  • RUN ON statement / CONNECT, CLUSTER, and RUN ON

S

  • SAVEPOINT attributes / Handling exceptions
  • SAVEPOINT foo; command / Handling exceptions
  • Security Definer / More control
  • Security Invoker / More control
  • SELECT command
    • versus PERFORM command / PERFORM versus SELECT
  • SELECT statement / Looping through query results, SELECT and TARGET
  • sequence object / Transactions
  • server
    • bigger server, moving to / Moving to a bigger server
    • data, partitioning across multiple servers / Data partitioning across multiple servers
  • server programming
    • need for / Why program in the server?
    • about / Why program in the server?
    • integrity checks, PL/pgSQL used / Using PL/pgSQL for integrity checks
    • acquisition cost / Cost of acquisition
  • set-returning function
    • using / Using a set-returning function
    • rows, returning from function / Returning rows from a function
  • SETOF <table/view>, RETURNS / Summary of RETURN SETOF variants
  • SETOF <type>, RETURNS / Summary of RETURN SETOF variants
  • SETOF ANY
    • returning / Returning SETOF ANY
  • SETOF RECORD, RETURNS / Summary of RETURN SETOF variants
  • sets
    • about / Sets and arrays
    • returning / Returning sets
    • of integers, returning / Returning a set of integers
  • set_salary() function / Auditing changes
  • simple queries
    • running / Running simple queries
  • single-server chat
    • specifications / Simple single-server chat
    • implementing / Simple single-server chat
  • skytools
    • URL / Fast capturing of database changes
  • smtplib
    • URL / Sending an e-mail
  • SOA / SOA – service-oriented architecture
  • sorting / Custom sort orders
  • SPI
    • about / Running queries and calling PostgreSQL functions
    • used, for C function / Sample C function using SPI
    • examples, URL / Visibility of data changes
    • URL / More info on SPI_* functions
  • SPI_*() functions / More info on SPI_* functions
  • SPI_exec() function / Sample C function using SPI
  • SPI_execute() / Visibility of data changes
  • SPLIT statement
    • array elements, distributing over multiple partitions / SPLIT – distributing array elements over several partitions
  • spoiler alert / Predictability
  • SQL/MED
    • used, for configuring PL/Proxy cluster / Configuring PL/Proxy cluster using SQL/MED
    • URL / Configuring PL/Proxy cluster using SQL/MED
  • SQL injection / Functions returning a record
  • SRF_FIRSTCALL_INIT() / Returning a set of records
  • SRF_PERCALL_SETUP() / Returning a set of records
  • SRF_RETURN_DONE() / Returning a set of records
  • STABLE function / Visibility
  • STRICT keyword / Smart handling of NULL arguments
  • structured data
    • sets / Sets and arrays
    • arrays / Sets and arrays
    • sets, returning / Returning sets
    • set-returning function, using / Using a set-returning function
    • function, views based / Functions based on views
    • OUT parameters / OUT parameters and records
    • records / OUT parameters and records
    • RETURN SETOF variants / Summary of RETURN SETOF variants
    • cursors, returning / Returning cursors
    • complex data types / Complex data types for modern world – XML and JSON
    • XML data type / XML data type and returning data as XML from functions
  • structured data, returning
    • XML, from functions / XML data type and returning data as XML from functions
  • structures
    • zero-filling / Zero-fill the structures
  • superuser / Advantages of the debugger
  • sys.stderr
    • redirecting / Redirecting sys.stdout and sys.stderr
  • sys.stdout
    • redirecting / Redirecting sys.stdout and sys.stderr

T

  • TABLE (...), RETURNS / Summary of RETURN SETOF variants
  • tables
    • splitting, over multiple databases / Dealing with success – splitting tables over multiple databases
  • table_ to_xml() function / XML data type and returning data as XML from functions
  • Talend / Procedural languages
  • TARGET statement / SELECT and TARGET
  • TD
    • about / Writing trigger functions in PL/Python
    • [*event*] key / Writing trigger functions in PL/Python
    • [*when*] key / Writing trigger functions in PL/Python
    • [*level*] key / Writing trigger functions in PL/Python
    • [*old*] key / Writing trigger functions in PL/Python
    • [*new*] key / Writing trigger functions in PL/Python
    • [*name*] key / Writing trigger functions in PL/Python
    • [*table_name*] key / Writing trigger functions in PL/Python
    • [*table_schema*] key / Writing trigger functions in PL/Python
    • [*relid*] key / Writing trigger functions in PL/Python
    • [*args*] key / Writing trigger functions in PL/Python
  • TD[*args*] key / Writing trigger functions in PL/Python
  • TD[*event*] key / Writing trigger functions in PL/Python
  • TD[*level*] key / Writing trigger functions in PL/Python
  • TD[*name*] key / Writing trigger functions in PL/Python
  • TD[*new*] key / Writing trigger functions in PL/Python
  • TD[*old*] key / Writing trigger functions in PL/Python
  • TD[*relid*] key / Writing trigger functions in PL/Python
  • TD[*table_name*] key / Writing trigger functions in PL/Python
  • TD[*table_schema*] key / Writing trigger functions in PL/Python
  • TD[*when*] key / Writing trigger functions in PL/Python
  • text_to_cstring(<textarg>) function / Sample C function using SPI
  • TG_ARGV / Creating the trigger
  • TG_LEVEL variable / Variables passed to the PL/pgSQL TRIGGER function
  • TG_NAME variable / Variables passed to the PL/pgSQL TRIGGER function
  • TG_NARGS, TG_ARGV[] variable / Variables passed to the PL/pgSQL TRIGGER function
  • TG_OP variable / Variables passed to the PL/pgSQL TRIGGER function
  • TG_RELID variable / Variables passed to the PL/pgSQL TRIGGER function
  • TG_TABLE_NAME variable / Variables passed to the PL/pgSQL TRIGGER function
  • TG_TABLE_SCHEMA variable / Variables passed to the PL/pgSQL TRIGGER function
  • TG_WHEN variable / Variables passed to the PL/pgSQL TRIGGER function
  • third-party tools / Procedural languages
  • thumbnails
    • generating, images saved / Generating thumbnails when saving images
  • tinyint data type / Installing an extension from PGXN
  • transaction isolation methods
    • URL / Transactions
  • transactions / Transactions
  • trigger
    • creating / Creating the trigger
    • simple trigger, creating / Simple "Hey, I'm called" trigger
    • audit trigger / The audit trigger
    • logging / The audit trigger, A log trigger
    • DELETE, disallowing / Disallowing DELETE
    • TRUNCATE, disallowing / Disallowing TRUNCATE
    • NEW record, modifying / Modifying the NEW record
    • timestamping / Timestamping trigger
    • immutable fields trigger / Immutable fields trigger
    • firing, controlling / Controlling when a trigger is called
    • using / And most importantly – use triggers cautiously!
  • trigger, controlling
    • conditional trigger / Conditional trigger
    • on specific field changes / Trigger on specific field changes
  • TRIGGER function / Managing related data with triggers
  • trigger function
    • creating / Creating the trigger function
    • visibility / Visibility
  • trigger function, PL/pgSQL
    • OLD, NEW variable / Variables passed to the PL/pgSQL TRIGGER function
    • TG_NAME variable / Variables passed to the PL/pgSQL TRIGGER function
    • TG_WHEN variable / Variables passed to the PL/pgSQL TRIGGER function
    • TG_LEVEL variable / Variables passed to the PL/pgSQL TRIGGER function
    • TG_OP variable / Variables passed to the PL/pgSQL TRIGGER function
    • TG_RELID variable / Variables passed to the PL/pgSQL TRIGGER function
    • TG_TABLE_NAME variable / Variables passed to the PL/pgSQL TRIGGER function
    • TG_TABLE_SCHEMA variable / Variables passed to the PL/pgSQL TRIGGER function
    • TG_NARGS, TG_ARGV[] variable / Variables passed to the PL/pgSQL TRIGGER function
  • trigger functions
    • writing, in PL/Python / Writing trigger functions in PL/Python
    • inputs, exploring / Exploring the inputs of a trigger
    • log trigger / A log trigger
  • triggers
    • data, managing / Managing related data with triggers
  • TRUNCATE command / Simple "Hey, I'm called" trigger
  • TRUNCATE trigger
    • disallowing / Disallowing TRUNCATE
  • trusted
    • about / Are untrusted languages inferior to trusted ones?
  • trusted languages
    • and untrusted languages, comparing / Are untrusted languages inferior to trusted ones?
  • type extensibility / Type extensibility

U

  • UDF / User-defined functions (UDF)
  • udp log type / A log trigger
  • unknown return structure / Returning with no predefined structure
  • unnest() function / Returning SETOF ANY
  • untrusted languages
    • and trusted languages, comparing / Are untrusted languages inferior to trusted ones?
    • database, corrupting / Will untrusted languages corrupt the database?
    • uses / Why untrusted?
  • UPDATE trigger / Modifying the NEW record
  • usagestamp() function / Immutable fields trigger

V

  • variable parameters
    • URL / User-defined functions (UDF)
  • variadic argument lists / Variadic argument lists
  • Version 0 Calling Conventions / Version 0 call conventions
  • Version 0, C function
    • URL / Version 0 call conventions
  • visibility
    • URL / Visibility
  • visibility rules
    • URL / Visibility of data changes
  • VOLATILE function
    • rules / Visibility

W

  • WARNING / "Error" states that are not errors

X

  • XML
    • data, returning from functions / XML data type and returning data as XML from functions
  • XML data type
    • functions, URL / XML data type and returning data as XML from functions

Y

  • YAGNI / YAGNI – you ain't gonna need it
  • yield keyword / Returning a set of records
  • Yii / Procedural languages
lock icon The rest of the chapter is locked
arrow left Previous Section
Register for a free Packt account to unlock a world of extra content!
A free Packt account unlocks extra newsletters, articles, discounted offers, and much more. Start advancing your knowledge today.
Unlock this book and the full library FREE for 7 days
Get unlimited access to 7000+ expert-authored eBooks and videos courses covering every tech area you can think of
Renews at $19.99/month. Cancel anytime