discrete ranges (e.g. all integer values 1 to 10) or continuous ranges (e.g., any time between and ). The built-in range types available include ranges of integers, big integers, decimal numbers, time stamps (with and without time zone) and dates. Custom range types can be created to make new types of ranges available, such as IP address ranges using the inet type as a base, or float ranges using the float data type as a base. Range types support inclusive and exclusive range boundaries using the / and / characters respectively. (e.g., represents all integers starting from and including 4 up to but not including 9.) Range types are also compatible with existing operators used to check for overlap, containment, right of etc. User-defined objects New types of almost all objects inside the database can be created, including: Casts Conversions Data types Data domains Functions, including aggregate functions and window functions Indexes including custom indexes for custom types Operators (existing ones can be overloaded) Procedural languages Inheritance Tables can be set to inherit their characteristics from a parent table. Data in child tables will appear to exist in the parent tables, unless data is selected from the parent table using the ONLY keyword, i.e. . Adding a column in the parent table will cause that column to appear in the child table. Inheritance can be used to implement table partitioning, using either triggers or rules to direct inserts to the parent table into the proper child tables. This feature is not fully supported. In particular, table constraints are not currently inheritable. All check constraints and not-null constraints on a parent table are automatically inherited by its children. Other types of constraints (unique, primary key, and foreign key constraints) are not inherited. Inheritance provides a way to map the features of generalization hierarchies depicted in entity relationship diagrams (ERDs) directly into the PostgreSQL database. Other storage features Referential integrity constraints including foreign key constraints, column constraints, and row checks Binary and textual large-object storage Tablespaces Per-column collation Online backup Point-in-time recovery, implemented using write-ahead logging In-place upgrades with pg_upgrade for less downtime Control and connectivity Foreign data wrappers PostgreSQL can link to other systems to retrieve data via foreign data wrappers (FDWs). These can take the form of any data source, such as a file system, another relational database management system (RDBMS), or a web service. This means that regular database