This page summarizes PostgreSQL language support in Spanner.
Spanner provides PostgreSQL language support by expressing Spanner database features through a subset of open source PostgreSQL language constructs, with extensions added to support Spanner features like interleaved tables and hints.
For detailed information about this support, refer to these pages:
- Lexical structure and syntax describes how to form valid PostgreSQL statements.
 - Data definition (DDL)
defines the syntax of DDL statements like 
CREATE DATABASEandCREATE TABLE. - Data manipulation (DML)
defines the syntax of DML statements like 
INSERTandUPDATE. - Queries defines the
syntax of the 
SELECTstatement. - Subqueries defines the syntax of subqueries.
 - Data types describes the data types that Spanner supports.
 - Functions describes the functions that Spanner supports.
 - Stored procedures describes stored procedures that come with Spanner.
 - Known issues in the PostgreSQL interface for Spanner describes PostgreSQL language features that don't work as expected.
 
Spanner doesn't support several open source PostgreSQL features, including the following:
- Triggers
 - SERIAL
 - Fine-grained concurrency control
 - SAVEPOINT
 - Transactional DDL
 - Partial indexes
 - Extensions
 - Foreign data wrappers
 - User-defined data types, functions and operators