https://wiki.postgresql.org/api.php?action=feedcontributions&user=Jakob&feedformat=atomPostgreSQL wiki - User contributions [en]2024-03-29T08:56:15ZUser contributionsMediaWiki 1.35.13https://wiki.postgresql.org/index.php?title=New_in_postgres_10&diff=30612New in postgres 102017-07-19T07:15:30Z<p>Jakob: /* Native Partitioning */ Fix error in partition sample code (upper limit is exclusive, not inclusive)</p>
<hr />
<div>= What's New In PostgreSQL 10 =<br />
<br />
<br />
== Big Data ==<br />
<br />
=== Native Partitioning ===<br />
<br />
In 10, partitioning tables is now an attribute of the table:<br />
<br />
CREATE TABLE table_name ( ... )<br />
[ PARTITION BY { RANGE | LIST } ( { column_name | ( expression ) }<br />
<br />
CREATE TABLE table_name<br />
PARTITION OF parent_table [ (<br />
) ] FOR VALUES partition_bound_spec<br />
'''<br />
Example'''<br />
<br />
Before:<br />
CREATE TABLE padre (<br />
id serial,<br />
pais integer,<br />
fch_creado timestamptz not null<br />
);<br />
<br />
CREATE TABLE hija_2017 (<br />
CONSTRAINT pk_2017 PRIMARY KEY (id),<br />
CONSTRAINT ck_2017 CHECK (fch_creado < DATE '2015-01-01' )<br />
) INHERITS (padre);<br />
CREATE INDEX idx_2017 ON hija_2017 (fch_creado);<br />
<br />
Today:<br />
CREATE TABLE padre (<br />
id serial not null,<br />
nombre text not null,<br />
fch_creado timestamptz not null<br />
)<br />
PARTITION BY RANGE ( id );<br />
<br />
CREATE TABLE hijo_0<br />
partition of padre (id, primary key (id), unique (nombre))<br />
for values from (unbounded) to (10);<br />
<br />
CREATE TABLE hijo_1<br />
partition of padre (id, primary key (id), unique (nombre))<br />
for values from (10) to (unbounded);<br />
<br />
This means that users no longer need to create triggers for routing data; it's all handled by the system.<br />
<br />
'''Another Example:'''<br />
<br />
For example, we might decide to partition the `book_history` table, probably a good idea since that table is liable to accumulate data forever. Since it's a log table, we'll range partition it, with one partition per month.<br />
<br />
First, we create a "master" partition table, which will hold no data but forms a template for the rest of the partitions:<br />
<br />
<br />
libdata=# CREATE TABLE book_history (<br />
book_id INTEGER NOT NULL,<br />
status BOOK_STATUS NOT NULL,<br />
period TSTZRANGE NOT NULL )<br />
PARTITION BY RANGE ( lower (period) );<br />
<br />
<br />
Then we create several partitions, one per month:<br />
<br />
<br />
libdata=# CREATE TABLE book_history_2016_09<br />
PARTITION OF book_history<br />
FOR VALUES FROM ('2016-09-01 00:00:00') TO ('2016-10-01 00:00:00');<br />
CREATE TABLE<br />
libdata=# CREATE TABLE book_history_2016_08<br />
PARTITION OF book_history<br />
FOR VALUES FROM ('2016-08-01 00:00:00') TO ('2016-09-01 00:00:00');<br />
CREATE TABLE<br />
libdata=# CREATE TABLE book_history_2016_07<br />
PARTITION OF book_history<br />
FOR VALUES FROM ('2016-07-01 00:00:00') TO ('2016-09-01 00:00:00');<br />
ERROR: partition "book_history_2016_07" would overlap partition "book_history_2016_08"<br />
<br />
<br />
As you can see, the system even prevents accidental overlap. New rows will automatically be stored in the correct partition, and SELECT queries will search the appropriate partitions.<br />
<br />
<br />
<br />
* [https://git.postgresql.org/gitweb/?p=postgresql.git;a=commitdiff;h=f0e44751d7175fa3394da2c8f85e3ceb3cdbfe63 commit]<br />
* [https://www.postgresql.org/docs/devel/static/ddl-partitioning.html#ddl-partitioning-declarative Documentation]<br />
* [https://www.keithf4.com/postgresql-10-built-in-partitioning/ Built-in Partitioning]<br />
<br />
=== Additional Parallelism ===<br />
<br />
Some additional plan nodes can be executed in parallel, particularly Index Scans.<br />
<br />
'''Example:'''<br />
<br />
For example, if we wanted to search financial transaction history by an indexed column, I can now execute it in one-quarter the time by using four parallel workers:<br />
<br />
accounts=# \timing<br />
Timing is on.<br />
accounts=# select bid, count(*) from account_history<br />
where delta > 1000 group by bid;<br />
...<br />
Time: 324.903 ms<br />
<br />
accounts=# set max_parallel_workers_per_gather=4;<br />
SET<br />
Time: 0.822 ms<br />
accounts=# select bid, count(*) from account_history<br />
where delta > 1000 group by bid;<br />
...<br />
Time: 72.864 ms<br />
<br />
(this assumes an index on bid, delta)<br />
<br />
Links:<br />
<br />
* [http://rhaas.blogspot.com.ar/2017/03/parallel-query-v2.html Parallel Query v2]<br />
<br />
=== Additional FDW Push-Down ===<br />
<br />
=== Faster Analytics Queries ===<br />
<br />
== Replication and Scaling ==<br />
<br />
=== Logical Replication ===<br />
<br />
example:<br />
<br />
Suppose I decide I want to replicate just the fines and loans tables from my public library database to the billing system so that they can process amounts owed. I would create a publication from those two tables with this command:<br />
<br />
<br />
libdata=# CREATE PUBLICATION financials FOR TABLE ONLY loans, ONLY fines;<br />
CREATE PUBLICATION<br />
<br />
<br />
Then, in the billing database, I would create two tables that looked identical to the tables I'm replicating, and have the same names. They can have additional columns and a few other differences. Particularly, since I'm not copying the patrons or books tables, I'll want to drop some foreign keys that they origin database has. I also need to create any special data types or other database artifacts required for those tables. Often the easiest way to do this is selective use of the `pg_dump` and `pg_restore` backup utilities:<br />
<br />
<br />
origin# pg_dump libdata -Fc -f /netshare/libdata.dump<br />
<br />
replica# pg_restore -d libdata -s -t loans -t fines /netshare/libdata.dump<br />
<br />
<br />
Following that, I can start a Subscription to those two tables:<br />
<br />
<br />
libdata=# CREATE SUBSCRIPTION financials<br />
CONNECTION 'dbname=libdata user=postgres host=172.17.0.2'<br />
PUBLICATION financials;<br />
NOTICE: synchronized table states<br />
NOTICE: created replication slot "financials" on publisher<br />
CREATE SUBSCRIPTION<br />
<br />
<br />
This will first copy a snapshot of the data currently in the tables, and then start catching up from the transaction log. Once it's caught up, you can check status in pg_stat_subscription:<br />
<br />
<br />
libdata=# select * from pg_stat_subscription;<br />
-[ RECORD 1 ]---------+---------------------<br />
subid | 16475<br />
subname | financials<br />
pid | 167<br />
relid |<br />
received_lsn | 0/1FBEAF0<br />
last_msg_send_time | 2017-06-07 00:59:44<br />
last_msg_receipt_time | 2017-06-07 00:59:44<br />
latest_end_lsn | 0/1FBEAF0<br />
latest_end_time | 2017-06-07 00:59:44<br />
<br />
<br />
blogs:<br />
<br />
* [https://blog.2ndquadrant.com/logical-replication-postgresql-10/ Logical Replication in PostgreSQL 10]<br />
<br />
=== Quorum Commit for Synchronous Replication ===<br />
While version 9.6 introduced quorum based synchronous replication, <br />
<br />
synchronous_commit = 'remote_apply'<br />
<br />
version 10 improves the synchronous_standby_names GUC by adding the FIRST and ANY keywords:<br />
<br />
synchronous_standby_names = ANY 2(node1,node2,node3);<br />
synchronous_standby_names = FIRST 2(node1,node2);<br />
<br />
FIRST was the previous behaviour, and the nodes priority is following the list order in order to get a quorum. ANY now means that any node in the list is now able to provide the required quorum. This will give extra flexibility to complex replication setups.<br />
<br />
=== Connection "Failover" in libpq ===<br />
<br />
[http://paquier.xyz/postgresql-2/postgres-10-libpq-read-write/ Implement failover on libpq connect level]<br />
<br />
=== Traceable Commit ===<br />
<br />
[https://blog.2ndquadrant.com/traceable-commit-postgresql-10/ Traceable commit for PostgreSQL 10]<br />
<br />
=== Physical Replication ===<br />
<br />
Improved performance of the replay of 2-phase commits<br />
<br />
Improved performance of replay when access exclusive locks are held on objects on the standby server. This can significantly improve performance in cases where temporary tables are being used.<br />
<br />
== Administration ==<br />
<br />
=== Compression support for pg_receivewal ===<br />
<br />
== SQL features ==<br />
<br />
=== Identity Columns ===<br />
<br />
[https://blog.2ndquadrant.com/postgresql-10-identity-columns/ PostgreSQL 10 identity columns explained]<br />
<br />
=== Crash Safe, Replicable Hash Indexes ===<br />
<br />
=== Transition Tables for Triggers ===<br />
<br />
This feature makes AFTER STATEMENT triggers both useful and performant by<br />
exposing, as appropriate, the old and new rows to queries. Before this feature,<br />
AFTER STATEMENT triggers had no direct access to these, and the workarounds were<br />
byzantine and had poor performance. Much trigger logic can now be written as<br />
AFTER STATEMENT, avoiding the need to do the expensive context switches at each<br />
row that FOR EACH ROW triggers require.<br />
<br />
== XML and JSON == <br />
<br />
=== XMLTable ===<br />
<br />
[https://blog.2ndquadrant.com/xmltable-intro/ XMLTABLE] is a SQL-standard feature that allows transforming an XML document to table format,<br />
making it much easier to process XML data in the database.<br />
Coupled with foreign tables pointing to external XML data, this can greatly simplify ETL processing.<br />
<br />
=== Full Text Search support for JSON and JSONB ===<br />
<br />
You can now create Full Text Indexes on JSON and JSONB columns.<br />
<br />
This involves converting the JSONB field to a `tsvector`, then creating an specific language full-text index on it:<br />
<br />
<br />
libdata=# CREATE INDEX bookdata_fts ON bookdata<br />
USING gin (( to_tsvector('english',bookdata) ));<br />
CREATE INDEX<br />
<br />
Once that's set up, you can do full-text searching against all of the values in your JSON documents:<br />
<br />
libdata=# SELECT bookdata -> 'title'<br />
FROM bookdata<br />
WHERE to_tsvector('english',bookdata) @@ to_tsquery('duke'); <br />
------------------------------------------<br />
"The Tattooed Duke"<br />
"She Tempts the Duke"<br />
"The Duke Is Mine"<br />
"What I Did For a Duke"<br />
<br />
== Security ==<br />
<br />
=== SCRAM Authentication ===<br />
<br />
=== New "monitoring" roles for permission grants ===<br />
<br />
=== Restrictive Policies for Row Level Security ===<br />
<br />
== Performance ==<br />
<br />
=== Cross-column Statistics ===<br />
<br />
Real-world data frequently contains correlated data in table columns, which can easily fool the query planner into thinking WHERE clauses are more selective than they really are, which can cause some queries to become very slow. [https://www.postgresql.org/docs/devel/static/sql-createstatistics.html Multivariate statistics objects] can be used to let the planner learn about this, which proofs it against making such mistakes. [https://www.postgresql.org/docs/devel/static/planner-stats.html#planner-stats-extended This manual section] explains the feature in more detail, and [https://www.postgresql.org/docs/devel/static/multivariate-statistics-examples.html this section] shows some examples. This feature in PostgreSQL represents an advance in the state of the art for all SQL databases.<br />
<br />
[https://blog.2ndquadrant.com/pg-phriday-crazy-correlated-column-crusade/ PG Phriday: Crazy Correlated Column Crusade]<br />
<br />
=== Latch Wait times in pg_stat_activity ===<br />
<br />
=== Query Planner Improvements ===<br />
<br />
In join planning, detect cases where the inner side of the join can only produce a single row for each outer side row. During execution this allows early skipping to the next outer row once a match is found. This can also remove the requirement for mark and restore during Merge Joins, which can significantly improve performance in some cases.<br />
<br />
== Other Features ==<br />
<br />
=== ICU Collation Support ===<br />
<br />
[https://blog.2ndquadrant.com/icu-support-postgresql-10/ More robust collations with ICU support in PostgreSQL 10]<br />
<br />
== Backwards-Incompatible Changes ==<br />
<br />
Version 10 has a number of backwards-incompatible changes which may affect system administration, particularly around backup automation. Users should specifically test for the incompatibilities before upgrading in production.<br />
<br />
=== Change in Version Numbering ===<br />
<br />
As of Version 10, PostgreSQL no longer uses three-part version numbers, but is shifting to two-part version numbers. This means that version 10.1 will be the first patch update to PostgreSQL 10, ''instead of'' a new major version. Scripts and tools which detect PostgreSQL version may be affected.<br />
<br />
The community strongly recommends that tools use either the GUC [https://www.postgresql.org/docs/9.2/static/runtime-config-preset.html server_version_num] (on the backend), or the libpq status function [https://www.postgresql.org/docs/9.2/static/libpq-status.html PQserverVersion] in libpq to get the server version. This returns a six-digit integer version number which will be consistently sortable and comparable between versions 9.6 and 10.<br />
<br />
{| class="wikitable" style="text-align: center;"<br />
! Version String<br />
! Major Version<br />
! Update Number<br />
! version_num<br />
|-<br />
|9.6.0<br />
|9.6<br />
|0<br />
|090600<br />
|-<br />
|9.6.3<br />
|9.6<br />
|3<br />
|090603<br />
|-<br />
|10.0<br />
|10<br />
|0<br />
|100000<br />
|-<br />
|10.1<br />
|10<br />
|1<br />
|100001<br />
|}<br />
<br />
* [http://www.databasesoup.com/2016/05/changing-postgresql-version-numbering.html Changing Postgres Version Numbering]<br />
<br />
=== Renaming of "xlog" to "wal" Globally (and location/lsn) ===<br />
<br />
In order to avoid confusion leading to data loss, everywhere we previously used the abbreviation "xlog" to refer to the transaction log, including directories, functions, and parameters for executables, we now use "wal". Similarly, the word "location" in function names, where used to refer to transaction log location, has been replaced with "lsn".<br />
<br />
This will require many users to reprogram custom backup and transaction log management scripts, as well as monitoring replication.<br />
<br />
=== Drop Support for FE/BE 1.0 Protocol ===<br />
<br />
PostgreSQL's original [https://www.postgresql.org/docs/current/static/protocol.html client/server protocol], version 1.0, will no longer be supported as of PostgreSQL 10. Since version 1.0 was superceded by version 2.0 in 1998, it is unlikely that any existing clients still use it.<br />
<br />
=== Change Defaults around Replication and pg_basebackup ===<br />
<br />
=== Drop Support for Floating Point Timestamps ===<br />
<br />
=== Remove contrib/tsearch2 ===<br />
<br />
Tsearch2, the older, contrib module version of our built-in full text search, has been removed from contrib and will no longer be built as part of PostgreSQL packages. Users who have been continuously upgrading since before version 8.3 will need to either manually modify their databases to use the built-in tsearch objects before upgrading to PostgreSQL 10, or will need to compile tsearch2 themselves from scratch and install it.<br />
<br />
=== Drop pg_dump Support for Databases Older than 8.0 ===<br />
<br />
Databases running on PostgreSQL version 7.4 and earlier will not be supported by 10's pg_dump or pg_dumpall. If you need to convert a database that old, use version 9.6 or earlier to upgrade it in two stages.</div>Jakobhttps://wiki.postgresql.org/index.php?title=Community_Guide_to_PostgreSQL_GUI_Tools&diff=25347Community Guide to PostgreSQL GUI Tools2015-06-29T07:39:20Z<p>Jakob: /* Proprietary */ Adding Postico</p>
<hr />
<div>{{Languages}}<br />
<br />
== Alternate Guides ==<br />
<br />
Much of this page is somewhat out of date at this point. A more current and detailed summary is available at <br />
[http://www.postgresonline.com/journal/index.php?/archives/133-Database-Administration,-Reporting,-and-Light-application-development.html Database Administration, Reporting, and Light application development]<br />
<br />
== Open Source / Free Software ==<br />
<br />
<br />
=== pgAdmin III ===<br />
<br />
http://www.pgadmin.org/<br />
<br />
MS Windows, GNU/Linux, FreeBSD, Mac OS X, OpenBSD, Solaris<br />
<br />
Admin<br />
<br />
pgAdmin III is THE Open Source management tool for your PostgreSQL databases. Features full Unicode support, fast, multithreaded query and data editting tools and support for all PostgreSQL object types.<br />
<br />
pgAdmin III is bundled with the Windows installer, and you can use that such a client to administer a remote server on another OS. Note that binary packages for platforms like RPM don't show up in every point release, you currently have to go back to v1.8.0 to get the last full set of packages.<br />
<br />
Free Administration Centre for the PostgreSQL database. Includes a graphical administration interface, an SQL query tool, a procedural code editor and much more. pgAdmin III is designed to answer the needs of most users, from writing simple SQL queries to developing complex databases. The graphical interface supports all PostgreSQL features and makes administration easy. Available in more than 30 languages and for several operating systems. <br />
<br />
=== phpPgAdmin ===<br />
<br />
http://sourceforge.net/projects/phppgadmin<br />
<br />
browser-based, requires webserver<br />
<br />
Admin<br />
<br />
Similar to the ever-popular phpMyAdmin, enhanced for PostgreSQL, supports browsing and modification of most types of PostgreSQL database objects, plus execution of ad-hoc queries. Maintained by (who else?) the phpPgAdmin team. (JMB 11.2002).<br />
<br />
phpPgAdmin (and the required Apache and PHP packages) may be easily installed using Stack Builder if you are running a one-click-installer PostgreSQL distribution.<br />
<br />
=== TeamPostgreSQL ===<br />
<br />
http://www.teampostgresql.com<br />
<br />
browser-based, webserver included<br />
<br />
AJAX/JavaScript-powered web interface for PostgreSQL administration. Browse, maintain and create data and database objects from anywhere, in the web browser. Supports SSH for both the web interface and the database connections. Rich interface with tabbed SQL editor with auto-completion, inline row-editing widgets, click-through foreign key navigation between rows and tables, 'favorites' management for commonly used scripts, and more.<br />
<br />
Installers available for Windows, Mac and Linux, alternatively download a simple cross-platform archive that runs anywhere with simple script.<br />
<br />
=== Adminer ===<br />
<br />
http://www.adminer.org<br />
<br />
browser-based, requires webserver<br />
<br />
Adminer (formerly phpMinAdmin) is a full-featured database management tool written in PHP. Conversely to phpMyAdmin, it consist of a single file ready to deploy to the target server. Adminer is available for MySQL, PostgreSQL, SQLite, MS SQL and Oracle.<br />
<br />
<br />
=== JetBrains IDEs - IntelliJ IDEA, PHPStorm, PyCharm, RubyMine, etc ... ===<br />
<br />
http://www.jetbrains.com/<br />
<br />
Windows, Mac OS X, Linux<br />
<br />
JetBrains Products - for example PHPStorm - have built-in database plugin.<br />
<br />
After you configured the data sources of your project, you can easily create tables, foreign keys, indexes much easier than usually, because the IDE is very smart; for example by foreign keys it automatically sets the name of the key, and the related columns. For me it is so far the best experience by creating a basic database schema. Even with editable EER models was it slower...<br />
By the settings of <span class="plainlinks">[http://goo.gl/TuqiPR<span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">pantun romantis terbaru]</span> your data source you can configure the SQL dialect of your database. After that if you want to add stored procedures or triggers, you will have code completion which is favorable too. So I think JetBrains products speed up your work if you exactly know what you want, and how can you make it.<br />
<br />
For PHPStorm (what I currently use) there is a free license for open source projects. For enterprise usage there is a 30 days trial, after that you can buy personal or commercial license which are very cheap compared to other products.<br />
<br />
For PyCharm (even the Community Edition) you can install the free JetBrains plugin [http://confluence.jetbrains.com/display/CONTEST/Database+Navigator Database Navigator] (Settings -> IDE Settings -> Plugins). It appears to deliver the same functionality described above for PHPStorm. You will get a new menu DB Navigator, left to the Help menu.<br />
<br />
=== Libre Office ===<br />
<br />
http://www.libreoffice.org/download/3-5-new-features-and-fixes/<br />
<br />
New native driver for PostgreSQL databases (for versions > 8.4 - support for version 8.4 will be included in LibreOffice 3.5.1). <br />
<br />
=== OpenOffice.org ===<br />
<br />
http://dba.openoffice.org/drivers/postgresql/index.html <br />
<br />
Windows, Linux, Solaris<br />
<br />
Verbatim from the above URL :<br />
<br />
The postgresql SDBC Driver allows to use the postgresql database from OpenOffice.org without any wrapper layer such as odbc or jdbc. The current <span class="plainlinks">[http://goo.gl/5kM0c2<span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">dapur minimalis]</span> version 0.7.6 can be considerded as good beta quality ( with some known issues and missing features). The driver is aimed at the 1.1 OpenOffice.org and OpenOffice.org 2.x versions, it does not work with OOo1.0.x trees. The final aim is to have an easier to use, faster, more feature rich database driver than the jdbc-odbc solution. The current version should already allow this in most places.<br />
<br />
=== The Red Hat Database Graphical Tools, RHDB Administrator and Visual Explain ===<br />
<br />
http://sources.redhat.com/rhdb<br />
<br />
Linux<br />
<br />
Admin<br />
<br />
Red Hat has stood by their word and open-sourced their database tools which ship with Red Hat Database for the benefit of the PostgreSQL community. I haven't used these, a review would be nice. Developed by Red Hat, Inc. (JMB 11.2002)<br />
<br />
<br />
=== GNOME-DB ===<br />
<br />
http://www.gnome-db.org<br />
<br />
Linux, Unix<br />
<br />
Admin<br />
<br />
Database administration/user tool for GNOME, based on libgda/libgnomedb, which are a complete database-independent access layer for UNIX systems, with support for PostgreSQL, MySQL, Sybase, MS SQL Server, Oracle, Interbase/Firebird, MS Access files, xBase.<br />
<br />
=== TOra, an Oracle tool with some PostgreSQL support ===<br />
<br />
http://tora.sf.net/<br />
<br />
Linux & Windows<br />
<br />
Admin<br />
<br />
An Oracle database administration interface, with limited ability to browse PostgreSQL databases (tables, views, and functions only). I'm told that if you have the Oracle libraries, Tora's sophisticated function editor will work for PostgreSQL as well. Developed by Henrik Johnson as a Quest Toad clone. (JMB 11.2002)<br />
<br />
=== Kexi ===<br />
<br />
http://www.calligra.org/kexi/<br />
http://www.kexi-project.org/<br />
<br />
Kexi is part of the Calligra Suite and is released under the GNU General Public License (GPL) and LGPL. <br />
<br />
available for <br />
FreeBSD & Linux, Apple, Windows, (Android)<br />
<br />
<br />
=== SQuirreL ===<br />
<br />
http://squirrel-sql.sourceforge.net/<br />
<br />
Macintosh/Windows<br />
<br />
SQuirreL SQL Client is a graphical SQL client written in Java that will allow you to view the structure of a JDBC compliant database, browse the data in tables, issue SQL commands etc.<br />
<br />
=== AnySQL Maestro ===<br />
<br />
http://www.sqlmaestro.com/products/anysql/maestro/<br />
<br />
Windows<br />
<br />
AnySQL Maestro is a freeware tool for administering any database engine (PostgreSQL, SQL Server, Oracle, MySQL, MS Access, etc.), which is accessible via ODBC driver or OLE DB provider. Includes Database Designer, Visual Query Builder, BLOB Viewer/Editor, SQL Editor, Data export/import and other features.<br />
<br />
=== SQL Workbench/J ===<br />
<br />
http://www.sql-workbench.net<br />
<br />
Java (multi-platform)<br />
<br />
An OpenSource SQL GUI tool similar to Squirrel. Data can be edited directly in the result set. It has strong support for exporting and importing data between databases using its own SQL command extension. It can be used in GUI mode or as a console application. All SQL Workbench specific commands can also be run in batch mode to automate export and import task. It supports schema comparison ("diff") and copying data between databases.<br />
<br />
=== PostgreSQL PHP Generator ===<br />
<br />
http://www.sqlmaestro.com/products/postgresql/phpgenerator/<br />
<br />
Windows<br />
<br />
PostgreSQL PHP Generator is a freeware but powerful PostgreSQL GUI frontend that allows you to generate high-quality PHP scripts for the selected tables, views and queries for the further working with these objects through the web.<br />
<br />
=== WaveMaker Ajax GUI Design Tool ===<br />
<br />
http://www.wavemaker.com/<br />
<br />
Windows, Macintosh, Linux<br />
<br />
WaveMaker is an Ajax-based GUI design tool for Postgres. WaveMaker is built using itself! WaveMaker generates a standard Java WAR file based on Spring, Hibernate and Dojo. WaveMaker supports Postgres schema creation and import and includes a visual query editor.<br />
<br />
=== Druid III ===<br />
<br />
http://druid.sourceforge.net/<br />
<br />
Java (multi-platform)<br />
<br />
The druid is a tools that allows users to create databases in a graphical way. The user can add tables, fields, folders to group tables and can modify most of the database options that follow the SQL-92 standard. In addition to sql options, the user can document each table and each field with HTML information. Once the database is created, the druid can generate:<br />
<br />
* HTML documentation: for all tables, with browsing facilities<br />
* PDF documentation: for all tables<br />
* Java classes: (one class for each table) that contain tables' constants (such as fields size) plus java code added by the user<br />
* A data dictionarythat contains all tables and fields present in the database<br />
* SQL script which contains all table definitions that can be piped to the DBMS<br />
* And much more info...<br />
<br />
=== Power*Architect === <br />
<br />
http://www.sqlpower.ca/page/architect<br />
<br />
Java (multi-platform) <br />
<br />
Power*Architect is an ERD modelling tool that is based on Java and JDBC. Support for forward and reverse engineering PostgreSQL databases is supported. It's OpenSource with a GPL license.<br />
<br />
=== RISE - Model Driven Development using ERD / UML === <br />
<br />
http://www.risetobloome.com<br />
<br />
Windows<br />
<br />
RISE is a free software suite for model driven information system development. Use a single source RISE model to generate your entire information solution including database, web services and documentation. Boost development throughput and improve quality and maintainability!<br />
<br />
The RISE user experience is based on a project concept, similar to that of most integrated development environments. The user works with resources and drawings that are part of a single development project.<br />
<br />
RISE supports a fully graphical approach to information modeling and system engineering, using ERD (Entity Relationship Diagram) as well as UML (Unified Modeling Language). This includes drag-and-drop of entities, their attributes and relations, as well as of views and entire web services.<br />
<br />
RISE supports graphic editing of complex objects such as views and orchestrated methods. RISE automatically safeguards the combination process, thus, assuring a technically correct result. <br />
<br />
RISE provides several ways to generate code from the model; directly to file, via the RISE Server or as an Internet service. RISE provides code generators for the database layer (SQL/DDL) as well as for the server side application layer (web services and persistent classes). All database scripts are incremental allowing you to install and maintain any number of databases from a single model. <br />
<br />
Feature list<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1355<br />
<br />
=== RISE PostgreSQL code generator === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1889<br />
<br />
Windows<br />
<br />
The RISE PostgreSQL code generator generates native PL/pgSQL scripts. Model your information in the free RISE Editor and generate your database script. The script incrementally updates the tables, columns, indexes and constraints in the database to match the RISE model. Once the database model is updated, the views defined in the RISE model are created in the database and possible default data, entered in the model, is inserted. <br />
<br />
=== RISE PHP for PostgreSQL code generator === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1888<br />
<br />
Windows<br />
<br />
The RISE PHP for PostgreSQL code generator renders PHP source code for database access. Model your information and programming interfaces in the free RISE Editor and generate your code. The generated code implements the classes and methods corresponding to the information interfaces specified in the RISE model. This includes classes for database access and, optionally, classes implementing SOAP/JSON web services and proxy classes assisting the implementation of a PHP SOAP client. <br />
<br />
=== Marshal SQL Utility === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1756<br />
<br />
Windows<br />
<br />
The Marshal SQL Utility is a generic cross database utility with batch execution capabilities. It allows you to test ODBC connections, browse database schemas, discover tables, views and columns. <br />
<br />
Key features of Marshal SQL Utility:<br />
<br />
* Execute any query supported by your database server<br />
* Execute batches of queries<br />
* Discover tables and views in your database<br />
* Discover columns for a selected table or view<br />
* Supports BLOBS and CLOBS<br />
* Save your results to file<br />
* Use any ODBC compliant database such as PostgreSQL.<br />
<br />
=== EMS SQL Manager for PostgreSQL Freeware === <br />
<br />
http://www.sqlmanager.net/en/tools/free<br />
<br />
Windows<br />
<br />
EMS SQL Manager for PostgreSQL Freeware (EMS SQL Manager Lite for PostgreSQL) is an excellent and easy-to-use freeware graphical tool for PostgreSQL database administration. It has the minimal required set of tools for those users who are new to PostgreSQL server and need only its basic functionality.<br />
EMS SQL Manager for PostgreSQL Freeware allows you to work with servers, databases and schemas, view, edit, search, group, sort and filter any data stored in a database, create and execute SQL queries with powerful SQL editor, handle multiple selected objects at a time and much more.<br />
<br />
=== Open Source CMS === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=2017<br />
<br />
Windows<br />
<br />
The CMS is a free Visual Studio 2010 solution template with a set of projects providing a complete Content Management System (CMS) based on RISE Visual Modeling with model, full source, sample site and DB-scripts for PostgreSQL, MySQL and SQL Server.<br />
<br />
It’s a complete ready-to-run Visual Studio solution with model, source code and web clients. It illustrates how to use RISE, how to implement a SOA backend and how to build RIA frontends.<br />
<br />
=== PSequel ===<br />
<br />
http://www.psequel.com/<br />
<br />
OS X Yosemite only, free, "Sequel Pro" inspired.<br />
<br />
=== No Longer Supported / Developed ===<br />
<br />
==== Xpg: Java PostgreSQL client ====<br />
<br />
http://www.kazak.ws/xpg<br />
<br />
Most platforms<br />
<br />
Admin<br />
<br />
Java-based PostgreSQL database administrator, with access to tables and data entry, query interface and ability to export query results to HTML reports. Developed by Soluciones Kazak, in Spanish, but available in English as well. (JMB 11.2002)<br />
<br />
(xpg has not been updated since 2004, and is no longer available)<br />
<br />
==== PGInhaler ====<br />
<br />
http://pginhaler.ifrance.com/pginhaler/<br />
<br />
Admin<br />
<br />
It's a free Java based PostgreSQL GUI. Haven't used it yet, but worth knowing about. (J.C.)<br />
<br />
(PGInhaler has not been updated since 2002)<br />
<br />
== Proprietary ==<br />
<br />
=== VSQL++ for PostgreSQL ===<br />
<br />
http://www.sqlpp.com/products/postgresql-management/<br />
<br />
A powerful Postgresql database management tool to help DBA sto manage the database objects easy and quickly.<br />
<br />
=== Nucleon Database Master for PostgreSQL and Others === <br />
<br />
Nucleon Database Master is a modern, powerful, intuitive, easy to use and all in one PostgreSQL MongoDB, Oracle, DB2, Informix, Ingres, SQL Server, SQL Azure, MySQL, FireBird, SQLite client application with a consistent interface that simplifies managing, querying, editing, visualizing, designing and <span class="plainlinks">[http://mitraharga.blogspot.co.uk/2014/09/harga-tablet-pc-axioo.html<span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">harga tablet axioo]</span> reporting relational and schema-free (NoSQL) database systems. You can connect any database system via ODBC and OleDB connections.Using Database Master, you can execute SQL, LINQ, JSON queries or you can create, edit and delete all database objects such as tables, views, procedures, columns, indexes, collections and triggers. You can execute SQL queries and scripts, view and edit table data including BLOBs (Image, Text or any file), represent tables and its relations as a ER(Entity Relationship) diagram.<br />
<br />
Info:<br />
http://www.nucleonsoftware.com/<br />
Windows, other platforms via WINE <br />
Admin<br />
<br />
=== Lightning Admin for PostgreSQL === <br />
<br />
http://www.amsoftwaredesign.com/<br />
<br />
Windows, other platforms via WINE<br />
<br />
Admin<br />
<br />
Lightning Admin is one of the best GUI admin tools available and sports a modern tabbed MDI interface and is the least expensive full featured GUI admin tool on the market. Compare to Navicat or EMS and save big. Current price is $19.99 per user.<br />
<br />
=== Borland Kylix ===<br />
<br />
http://www.borland.com/kylix<br />
<br />
Linux<br />
<br />
ERD<br />
<br />
driver: http://www.vitavoom.com/Products/pgExpress_Driver/index.html<br />
<br />
The third most popular IDE for Linux, according to a recent Linux Journal poll. Focuses on interface-building for database applications, with some support for browsing database objects (I think). PostgreSQL native drivers are available free from Vita Voom Software. (JMB 11.2002)<br />
<br />
=== DBOne ===<br />
<br />
http://www.dbone.info<br />
<br />
Windows<br />
<br />
Admin<br />
<br />
DBOne is a shareware Database Administration Tool for PostgreSQL and Oracle, MSSQL, Sybase, DB2, SAPDB, Interbase/Firbird, MySQL.<br />
<br />
=== DBTools Manager ===<br />
<br />
http://www.dbtools.com.br<br />
<br />
Windows<br />
<br />
Admin<br />
<br />
Freeware, available for PostgreSQL and MySQL, allows managing all aspects of the database: db, table, triggers, functions, etc. Includes import/export wizards to migrate data and structure to/from other database engines. Developed by DBTools Software.<br />
<br />
=== PgManager ===<br />
<br />
http://www.ems-hitech.com/pgmanager<br />
<br />
Windows, Linux version just released<br />
<br />
Admin<br />
<br />
Basically a proprietary, more powerful version of PGAdmin II or PGAccess. Adds support for trigger and constraint editing, metadata logging, and query monitoring. Also includes multiple-format data import/export tools, which are also available on their own for Linux. Developed by EMS Hitech. (JMB 4.2003).<br />
<br />
<br />
<br />
=== Rekall ===<br />
<br />
http://www.thekompany.com/products/rekall<br />
<br />
Linux<br />
<br />
ERD<br />
<br />
Designed by The Kompany as a Linux-based competitor to MS Access, this simple interface and database interface-builder is unfortunately designed for MySQL and <span class="plainlinks">[http://aurora-ndut.blogspot.mx/2014/09/kata-kata-cinta.html<span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">kata kata cinta]</span> has some problems with PostgreSQL. Was still buggy in May 2002, but may be improved by now. Supports limited browsing of database objects, creation of data entry forms and reports. (JMB 11.2002)<br />
<br />
=== Data Architect ===<br />
<br />
http://www.thekompany.com/products/dataarchitect<br />
<br />
Linux<br />
<br />
ERD<br />
<br />
I'm trying DataArchitect 2 from theKompany now for 6 month. Highly recommended if you want an easy to use DB-Design Tool, but generated SQL-Scripts needs some rework. PostgreSQL is supported, you easily can create Stored Procedures, Foreign Keys, Views and Triggers. (Bernd, 1.2003)<br />
<br />
=== SyBase Power Designer ===<br />
<br />
http://www.sybase.com/products/enterprisemodeling/powerdesigner<br />
<br />
Admin<br />
<br />
Sybase PowerDesigner is power tool with built in PostgreSQL support. It support tables, views, triggers, constraints and referential integrity. More advanced than Data Architect.<br />
<br />
=== Microsoft Access === <br />
<br />
http://office.microsoft.com<br />
<br />
Windows + ODBC only<br />
<br />
ERD, Admin<br />
<br />
Yes, you can use MS Access as a PostgreSQL database interface. Supports data access to PostgreSQL tables and views; many ODBC-based limitations and errors. I don't need to tell anyone what MS Access' other capabilities are. (JMB 11.2002)<br />
<br />
=== eRWin ===<br />
<br />
http://www.ca.com/products/alm/erwin.htm<br />
<br />
Windows<br />
<br />
ERD<br />
<br />
Apparently a high-end tool by Computer Associates with PostgreSQL support as a downloadable addon for some version(s). Haven't tried this. JC<br />
<br />
=== DeZign for Databases ===<br />
<br />
http://www.datanamic.com<br />
<br />
Windows<br />
<br />
ERD<br />
<br />
DeZign is a database development tool using an entity relationship diagram. It visually supports the lay out of the entities and relations and automatically generates SQL schemas for most leading databases including PostgreSQL.<br />
<br />
=== PGExplorer ===<br />
<br />
http://www.PGExplorer.com<br />
<br />
Windows (Shareware)<br />
<br />
Admin<br />
NOTE this software is not maintained and has not had a new release in many years. Because of it's age it does not support schemas on PGSQL versions 7.3 and up.<br />
<br />
Postgres Explorer is a full-featured GUI postgres development tool. Features include a tree view of your databases, and database objects. You can reverse engineer SQL statements from your database objects , modify the SQL and execute it. Wizards will guide you through the process to generate SQL for various objects and statements. The latest release includes a Graphical Select Query Designer (anonymous, 4.2003)<br />
<br />
=== Case Studio 2 ===<br />
<br />
http://www.casestudio.com<br />
<br />
Windows<br />
<br />
ERD<br />
<br />
I just downloaded the trial version, so far it looks real promising and claims to support PostgreSQL. Handles reverse engineering of existing databases, and has a real nice interface for setting up tables, relationships etc. You can get a lite or full version. The description from the website... Professional database modeling tool for various databases. CASE Studio 2 includes following key features:<br />
<br />
LITE version features + Reverse Engineering from various database systems Version Manager Data Flow Diagrams Definition of user defined variables Large COM interface Users, User groups and User permission support and many more.<br />
<br />
=== pgEdit ===<br />
<br />
http://pgedit.com<br />
<br />
Macintosh/Windows<br />
<br />
pgEdit is a high performance SQL editor and development environment designed specifically for PostgreSQL relational databases. pgEdit features include SQL syntax coloring, direct source code execution, PHP support, integrated documentation, and extensive customizable editing facilities.<br />
<br />
pgEdit uses psql, the interactive terminal application included with every PostgreSQL installation. This makes it easy to develop with pgEdit and then transfer your work to any PostgreSQL installation for maintenance and production tasks.<br />
<br />
pgEdit is a native application for both Macintosh and Windows. It does not use Java or require installation of external libraries. You have the option of using the version of psql included with pgEdit or a different version installed anywhere on your hard drive.<br />
<br />
<br />
=== RazorSQL ===<br />
<br />
http://www.razorsql.com/<br />
<br />
Macintosh/Windows/Linux/Solaris<br />
<br />
RazorSQL is an SQL query tool, database browser, SQL editor, and database administration tool that supports PostgreSQL and any other JDBC or ODBC compliant database. Some of the major features are tools for creating, dropping, and altering objects such as tables, views, indexes, triggers, functions, users, and databases; a programming editor that supports 20 different programming languages; import and export tools; auto column and table lookup; and a query builder, query scheduler, and SQL formatter.<br />
<br />
<br />
=== MicroOLAP Database Designer ===<br />
<br />
http://www.microolap.com/products/database/postgresql-designer/<br />
<br />
Windows ODBC<br />
<br />
Database Designer for PostgreSQL is an easy CASE tool with intuitive graphical interface allowing you to build a clear and effective database structure visually, see the complete picture (diagram) representing all the tables, references between them, views, stored procedures and other objects. Then you can easily generate a physical database on a server, modify it according to any changes you made to the diagram using fast ALTER statements.<br />
<br />
<br />
=== Import / Export and synchronization tools for PostgreSQL ===<br />
<br />
http://convertdb.com/postgresql<br />
<br />
Microsoft Windows 8 / 7 / Vista / XP / 2000 / NT.<br />
Software is able to connect to remote PostgreSQL 9.x/7.4 located on Linux, Solaris, Mac OS X, and Windows.<br />
<br />
ConvertDB cross database migration tools assist in data conversion and synchronization among PostgreSQL, MySQL, MS SQL Server, MS Windows SQL Azure, and MS Access databases <br />
<br />
* 1 Million of records can be transferred in 5-10 minutes.<br />
* Bi-directional synchronization between PostgreSQL, MS SQL, MySQL and Oracle <br />
* Scheduling migration and synchronization jobs.<br />
<br />
<br />
=== dbForge Data Compare for PostgreSQL ===<br />
<br />
http://www.devart.com/dbforge/postgresql/datacompare/<br />
<br />
Microsoft Windows 2000/XP/2003/Vista and Windows 7<br />
<br />
'''dbForge Data Compare for PostgreSQL''' by '''Devart''' is a tool for table data comparison and synchronization. When using PostgreSQL data compare tool developer can detect data differences in compared PostgreSQL tables; generate data synchronization script and execute it to eliminate all these differences.<br />
<br />
'''Key features:'''<br />
<br />
* Identify the differences between two databases<br />
* Compare separate tables or table groups by table name mask<br />
* Compare tables with different structure<br />
* Generate a report embodying data diff and save it for further analysis<br />
* Sync data in tables and views in full or in part<br />
* Generate SQL script for database synchronization<br />
* Organize database synchronization according to the schedule<br />
<br />
=== Aqua Data Studio ===<br />
<br />
http://www.aquafold.com/index-postgresql.html<br />
<br />
Java: Windows/Linux/Macintosh OSX/Solaris<br />
<br />
Aqua Data Studio is a management tool for the PostgreSQL relational database w/ administration capabilities and a database query tool. The visual administration features provide users the ability to browse and modify database structures, including schema objects, database storage and maintain database security. An integrated query tool allows users to quickly create, edit and execute SQL queries and scripts. Aqua Data Studio also provides an import and export tool to allow users to easily move data in and out of the PostgreSQL database in and from different data formats.<br />
<br />
=== Tuples ===<br />
<br />
http://www.tuplesapp.com/<br />
<br />
Mac OSX<br />
<br />
Tuples is the first native client for PostgreSQL for Mac OSX. It supports connecting to several servers at the same time, exporting data in several formats and profiling queries. As a native client it is fast, lightweight and a good Mac citizen.<br />
<br />
=== EMS Database Management Tools for PostgreSQL ===<br />
<br />
http://www.sqlmanager.net/en/products/postgresql<br />
<br />
Windows<br />
<br />
PostgreSQL Tools Products Family:<br />
<br />
* [http://www.sqlmanager.net/en/products/studio/postgresql SQL Management Studio for PostgreSQL] - single workbench for administering PostgreSQL databases, managing database schema and objects as well as for database design, migration, extraction, query building, data import, export and database comparison. <br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/manager SQL Manager for PostgreSQL] - high performance graphical tool for PostgreSQL database administration and development. It makes creating and editing PostgreSQL database objects easy and fast, and allows you to run SQL scripts, visually design databases, build SQL queries, extract, print and search metadata, import and export PostgreSQL database data and much more.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/dataexport Data Export for PostgreSQL] - tool to export PostgreSQL database data quickly to any of 19 available formats, including MS Access, MS Excel, MS Word, RTF, HTML, TXT, ODF and more. Data Export for PostgreSQL has a <span class="plainlinks">[http://aurora-ndut.blogspot.fr/2013/10/kata-kata-lucu.html<span style="color:black;font-weight:normal; text-decoration:none!important; background:none!important; text-decoration:none;">kata kata lucu]</span> friendly wizard, which allows you to set various options of PostgreSQL export process visually and a command-line utility to automate your PostgreSQL export jobs using the configuration file.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/dataimport Data Import for PostgreSQL] - tool to import data to PostgreSQL tables from MS Excel 97-2007, MS Access, DBF, TXT, CSV, MS Word 2007, RTF, ODF and HTML files. This utility allows you to quickly import data to one or several PostgreSQL tables or views at once, save all PostgreSQL import parameters set on current wizard session, use special batch insert mode to import PostgreSQL data at the maximum possible speed and much more.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/datapump Data Pump for PostgreSQL] - migration tool for converting databases and importing table data from an ADO-compatible source (e.g. MS Access, MS SQL database or any other database with ADO support) to PostgreSQL databases.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/datagenerator Data Generator for PostgreSQL] - tool for generating test data to PostgreSQL database tables. The utility can help you to simulate the database production environment and allows you to populate several PostgreSQL database tables with test data simultaneously, define tables for generating data, set value ranges, control a wide variety of generation parameters for each field type and much more.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/dbcomparer DB Comparer for PostgreSQL] - tool for comparing PostgreSQL database schemas and discovering differences in their structures. You can view all the differences in compared database objects and execute an automatically generated script to synchronize structure of PostgreSQL databases and eliminate these differences.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/extract DB Extract for PostgreSQL] - easy-to-use tool for creating PostgreSQL database backups in a form of SQL scripts. This database script utility allows you to save metadata of all PostgreSQL database objects as well as PostgreSQL table data as database snapshots.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/query SQL Query for PostgreSQL] - useful tool that lets you quickly and simply build SQL queries to PostgreSQL databases. Visual PostgreSQL query building as well as direct editing of a query text is available.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/datacomparer Data Comparer for PostgreSQL] - tool for PostgreSQL data comparison and synchronization. Using this utility you can view all the differences in compared PostgreSQL tables and execute an automatically generated script to eliminate these differences.<br />
<br />
=== Navicat ===<br />
<br />
http://pgsql.navicat.com/<br />
<br />
Windows/Macintosh OSX<br />
<br />
Navicat is a powerful PostgreSQL Database Server administration and development tool. It works with PostgreSQL 8.0 version or above and supports most of the PostgreSQL features including Trigger, Function, View, Manage User, and so on. It is also not only sophisticated enough for professional developers, but also easy to learn for new users. With its well-designed GUI, Navicat lets you quickly and easily create, organize, access and share information in a secure and easy way.<br />
<br />
=== SQL Maestro Group products for PostgreSQL ===<br />
<br />
http://www.sqlmaestro.com/products/postgresql/<br />
<br />
Windows<br />
<br />
[http://www.sqlmaestro.com SQL Maestro Group] offers a number of tools for PostgreSQL.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/maestro/ PostgreSQL Maestro] allows you to create, edit, copy, drop and dump database objects easy and fast. You can also design your database as ER diagram, build queries visually, execute SQL queries and scripts, debug PL/pgSQL functions, view and edit data including BLOBs, represent data as diagrams, export and import data to/from most popular file formats, analyze your data summarized into multidimensional views and hierarchies (OLAP cubes), manage PostgreSQL roles, users, groups and privileges, and use a lot of other admin tools designed for making your work with PostgreSQL database server comfortable and efficient.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/datawizard/ PostgreSQL Data Wizard] provides you with a number of easy-to-use wizards to transfer any database to PostgreSQL, export data from PostgreSQL tables, views and queries to most popular formats, and import data from various sources into PostgreSQL tables.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/codefactory/ PostgreSQL Code Factory] is a GUI tool aimed at the SQL queries and scripts development.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/datasync/ PostgreSQL Data Sync] is a powerful and easy-to-use tool for database contents comparison and synchronization.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/phpgenerator/ PostgreSQL PHP Generator Professional] is a frontend that allows you to generate high-quality PHP applications for your database in a few mouse clicks.<br />
<br />
SQL Maestro Group also produces similar tools for MySQL, Oracle, MS SQL Server, SQLite, Firebird, DB2, SQL Anywhere, and MaxDB.<br />
<br />
=== Datanamic DataDiff for PostgreSQL ===<br />
<br />
http://www.datanamic.com/datadiff-for-postgresql/<br />
<br />
Windows<br />
<br />
Datanamic DataDiff for PostgreSQL is a utility for data comparison and synchronization. Compare data for selected tables in two databases, view differences and publish changes quickly and safely. Flexible comparison and synchronization settings will enable you to set up a customized comparison key and to select tables and fields for comparison and for synchronization.<br />
DB Data Difftective can be used for data migrations, verification of (corrupt) data, data auditing etc.<br />
<br />
=== Datanamic SchemaDiff for PostgreSQL ===<br />
<br />
http://www.datanamic.com/schemadiff-for-postgresql/index.html<br />
<br />
Windows<br />
<br />
Datanamic SchemaDiff for PostgreSQL is a tool for comparison and synchronization of database schemas. It allows you to compare and synchronize tables, views, functions, sequences (generators), stored procedures, triggers and constraints between two databases.<br />
<br />
=== DB MultiRun PostgreSQL Edition ===<br />
<br />
http://www.datanamic.com/multirun/index.html<br />
<br />
Windows<br />
<br />
DB MultiRun is a simple tool to execute multiple SQL scripts on multiple databases quickly.<br />
Define a list of databases, add SQL scripts to execute on these databases and click "execute" to run those scripts on the databases in the list. The multi-threaded execution of the SQL scripts makes it complete the task fast. After execution of the scripts you can examine the results of the executed scripts on each database.<br />
<br />
=== SQLPro ===<br />
<br />
http://www.vive.net/products/sqlpro.htm<br />
<br />
Windows<br />
<br />
SqlPro is an easy to use database GUI tool for six popular databases (Oracle, MySQL, PostgreSQL, SQL Server, SQLite and Access). One IDE makes database administration and development faster and error free. <br />
SQLPro Key Features: color-coding of the SQL, drag-and-drop of objects into the editor pane to save you from typing their names, retrieval of SQL code for things like stored procedures and triggers from the underlying database, and one-click creation of SELECT and INSERT statements. You can open, save and print SQL scripts.<br />
SQLPro uses native drivers to connect to the databases (no ODBS or third party engines to install).<br />
<br />
=== DB Doc ===<br />
<br />
http://www.yohz.com/dbdoc_overview.htm<br />
<br />
Windows<br />
<br />
DB Doc helps you document your database structure and objects. Documents can be generated as PDF reports, HTML pages, or a single compiled HTML file. The layout is fully customizable, and you can quickly view inter-object dependencies using hyperlinks.<br />
<br />
DB Doc supports PostgreSQL 8.3 to 9.3.<br />
<br />
=== SQL Spreadsheets ===<br />
<br />
http://www.yohz.com/sqlxl_overview.htm<br />
<br />
Windows<br />
<br />
SQL Spreadsheets lets you export images and binary files to an Excel spreadsheet. Images can be displayed directly in the spreadsheet itself, or saved to disk and displayed as a link in the spreadsheet.<br />
<br />
=== SQL File Import ===<br />
<br />
http://www.yohz.com/products_sqlfileimport_overview.htm<br />
<br />
Windows<br />
<br />
SQL File Import allows you to upload files, images, and other data into your database, without having to write any SQL statements. SQL File Import supports PostgreSQL, Firebird, MySQL, Oracle, SQLite, SQL Server, and various ODBC-supported databases (e.g. DB2 and PostgreSQL).<br />
<br />
A scripting engine allows you to transform data before importing them into your database. A command line version is also included to allow you to perform unattended upload/import tasks.<br />
<br />
=== SQL Image Viewer ===<br />
<br />
http://www.yohz.com/siv_overview.htm<br />
<br />
Windows<br />
<br />
SQL Image Viewer allows you to retrieve, view, convert and export images stored in Firebird, MySQL, Oracle, SQLite, SQL Server, and various ODBC-supported databases (e.g. DB2 and PostgreSQL). It supports the following image formats: BMP, GIF, JPG, PNG, PSD, and TIFF.<br />
<br />
It also allows you to export binary data, and recognises the following binary file types: PDF, MP3, WAV, 7Z, BZ2, GZ, RAR, ZIP, and has experimental support for DOC, PPT and XLS file types.<br />
<br />
A command line version is also included to allow you to perform unattended scheduled exports of binary data.<br />
<br />
=== SQL Data Sets ===<br />
<br />
http://www.yohz.com/sds_overview.htm<br />
<br />
Windows<br />
<br />
SQL Data Sets allows you to generate and save data sets retrieved from PostgreSQL, Oracle, SQL Server and ODBC-supported database engine. Saved data sets are compressed and can optionally be encrypted. Shared data sets can be opened by other users using the free SQL Data Sets Viewer. Saved data sets can also be queried further without the need to connect to any database engine, can be exported to HTML, Excel, XML and plain text files. The SQL Data Sets Viewer can also display images stored in binary fields, and identify PDF, MP3, WAV, 7Z, BZ2, GZ, RAR, ZIP, and unprotected Microsoft Office files.<br />
<br />
=== SQL Select ===<br />
<br />
http://www.yohz.com/sqlselect_details.htm<br />
<br />
Windows<br />
<br />
SQL Select is a lightweight SQL IDE for PostgreSQL, Oracle, SQL Server, MySQL, Firebird, and ODBC-supported database engine. It also allows you to export result sets to a SQLite database.<br />
<br />
=== Online Web System ===<br />
<br />
[http://www.younicycle.com Younicycle, the Integrated Web System & Web Office]<br />
<br />
Any recent web browser with FlashPlayer<br />
<br />
Provides an integrated set of GUI tools designed to allow PostgreSQL non-experts to effectively collaborate with more advanced PG Users and Web developers. Includes a Table Editor (unlimited Tables), a graphical Query Builder and a Functions Editor, along with additional tools for Content Management, Print Management and Cloud Management. Designed initially to be an alternative to Filemaker, but has continued to advance beyond that goal. Additional, integrated tools include Php (Actions Editor), WYSIWYG Web site Design, Pdf - Report Design & creation tool(with variable data print (PdfLib)), internal chat, datasources, dynamic charts, hosting, publish to web, css/js editor, QRCode generator, CRON, ACL with Role based permissions + additional ancillary tools. Recently added integration with Google Drive (Docs, spreadsheets, Picasa & Calendar), allowing import of Google spreadsheets directly in to PG Tables. All created content can be 'bundled' with the internal SaaS Manager and installed in other accounts (or server installations) with a click. The end result is an online Web System and Web Office allowing 'Novices' to see and work with PG + web developers within an integrated environment. Free - 30 day trial account without credit card info. Also available as a server install (Debian only).<br />
<br />
=== SQLTool Pro Database Editor ===<br />
<br />
http://www.sqltoolpro.com<br />
<br />
Android<br />
<br />
SQLTool Pro is a professional Android SQL editor for MySQL, SQL Server, PostgreSQL, Sybase, and Oracle Databases.<br />
<br />
=== DbVisualizer ===<br />
<br />
http://www.dbvis.com/<br />
<br />
Windows/OS X/Linux/UNIX<br />
<br />
DbVisualizer is a feature rich, intuitive multi-database tool for developers, database administrators, and increasingly for advanced analysts providing a single powerful interface across a wide variety of operating systems. With its easy-to-use and clean interface, DbVisualizer has proven to be one of the most cost effective database tools available, yet to mention that it runs on all major operating systems and supports all major RDBMS that are available. Users only need to learn and master one application. DbVisualizer integrates transparently with the operating system being used. <br />
<br />
[[Category:Tool]]<br />
[[Category:General articles and guides]]<br />
<br />
<br />
=== Valentina Studio (Free) ===<br />
<br />
http://www.valentina-db.com/valentina-studio-overview<br />
<br />
Windows/OS X/Linux/<br />
<br />
Valentina Studio is a powerful PostgreSQL Database Server administration and development tool. It offers for free many advanced editors:<br />
* Schema Editor with Tree and Column views<br />
* Diagram Editor with reverse engineering<br />
* SQL Editor with auto-completion, syntax-highlighting, recent and favorite queries, templates of commands, many result tab-panels, ...<br />
* Data Editor with easy sorting and filtering of records without SQL, in-cell editing.<br />
* Related Data Editor that allow s you to learn related records in different modes.<br />
* Import/Export<br />
* SQL dumps<br />
* and so on ...<br />
<br />
Valentina Studio PRO - adds additional advanced features as:<br />
* Report Editor to developer reports based on Valentina Report Engine with datasources from PostgreSQL and other databases.<br />
* Diagrams forward engineering<br />
* SQL DIFF<br />
* Data Transfer <br />
<br />
[[Category:Tool]]<br />
<br />
=== PG Commander ===<br />
<br />
http://eggerapps.at/pgcommander/<br />
<br />
Mac OS X<br />
<br />
PG Commander is a modern PostgreSQL client for developers and content editors. Great interface for browsing tables & editing records (especially tables with foreign keys). Has a very nice graphical SQL Terminal. Supports PostgreSQL 8.0 and up, including Amazon Redshift. Built-In support for connecting via SSH tunnels.<br />
<br />
=== JackDB ===<br />
<br />
http://www.jackdb.com/<br />
<br />
Html5 Web Browser (Linux/Mac OS X/Windows)<br />
<br />
JackDB is a database client that runs entirely in your web browser. There's no software to install locally so you can use it on Mac OS X, Linux, and Windows and it works on all major modern browsers (eg. Chrome, Firefox, IE, Safari, and Opera). It supports connecting to PostgreSQL, as well as MySQL, Oracle, and SQL Server databases.<br />
<br />
Features:<br />
* Html5 interface with no client installation<br />
* Query editor with syntax highlighting<br />
* Scrolling result sets<br />
* Schema/Object browser<br />
* SSL connections with certificate pinning<br />
* Eliminates password sharing<br />
* Two-factor authentication<br />
* BLOB display (images and Html5 audio/video)<br />
<br />
=== Tadpole DB Hub ===<br />
<br />
https://github.com/hangum/TadpoleForDBTools/wiki<br />
<br />
Tadpole DB Hub is Unified infrastructure tool, various environment based interface for managing Apache Hive, Amazon RDS, CUBRID, MariaDB, MySQL, Oracle, SQLite, MSSQL, PostgreSQL and MongoDB databases. It enables you to handle typical DB over the World Wide Web.<br />
<br />
Features:<br />
* Intuitive web interface (Safari, Chrome, IE 10, Firefox)<br />
* User Management (Admin, Manager, User)<br />
* Select, Insert, Update, Delete<br />
* Download query result<br />
* SQL Syntax Highlighting<br />
* SQL Formatting<br />
* SQL Statement <-> Java, PHP String Literal Each Convert<br />
* SQL Assist<br />
* Execute SQL Statement<br />
* SQL Result Set to CSV<br />
* SQL History And Export text<br />
* Generate SQL Statement (Select, Insert, Update, Delete, Table, View, Index, Procedure, Function, Trigger)<br />
* Generate ER Diagram (Auto Layout)<br />
<br />
=== Vertabelo ===<br />
<br />
http://www.vertabelo.com<br />
<br />
Vertabelo is an online database designer working under Chrome. It free to use for smaller projects and have commercial version for larger database projects.<br />
<br />
Features:<br />
* Intuitive HTML5 web interface (Chrome)<br />
* OS independent<br />
* Sharing DB model with team members<br />
* Support for PosgreSql, MySQL, Oracle, MS SQL Server, DB2, SQLite, HSQLDB, <br />
* Model versioning<br />
* Dynamic/Visual search<br />
* Live model validation<br />
* Reverse engineering<br />
<br />
=== pgModeler ===<br />
<br />
PostgreSQL Database Modeler<br />
<br />
http://pgmodeler.com.br<br />
<br />
PostgreSQL Database Modeler, or simply, pgModeler is an open source tool for modeling databases that merges the classical concepts of entity-relationship diagrams with specific features that only PostgreSQL implements. The pgModeler translates the models created by the user to SQL code and apply them onto database clusters from version 8.0 to 9.1. $3.50 per copy as of 2014/04/09.<br />
<br />
<br />
=== GenMyModel ===<br />
<br />
https://www.genmymodel.com<br />
<br />
GenMyModel is an online modeling tool supporting [http://www.genmymodel.com/database-diagram-online database modeling]. It is free to use for smaller projects and have commercial version for larger database projects.<br />
<br />
Features:<br />
* Intuitive HTML5 web interface (Chrome, Firefox, Safari, Internet Explorer)<br />
* OS independent<br />
* Instant sharing and collaboration<br />
* Customizable SQL generators<br />
* Model versioning<br />
* Live model validation<br />
<br />
=== SQLPro for Postgres ===<br />
<br />
http://www.hankinsoft.com/SQLProPostgres<br />
<br />
Mac OS X 10.8 and above<br />
<br />
Features:<br />
* 100% native OS X app with a clean and simple to use interface.<br />
* Query editor with syntax highlighting and autocomplete.<br />
* Support for multiple result set execution.<br />
* History feature, displaying your last ten executed queries.<br />
* Primary key detection for inline result set modifications.<br />
* Custom theme support allowing developers to work with style.<br />
<br />
=== DBHawk ===<br />
<br />
http://www.datasparc.com/<br />
<br />
Web Browser (Linux/Mac OS X/Windows)<br />
<br />
DBHawk is a web based SQL tool and reporting software designed for PostgreSQL, Oracle, SQL Server and other databases. Its easy to deploy and use.<br />
<br />
Features:<br />
* Web based interface with no client installation<br />
* Advanced Query editor with syntax highlighting and multi tabs results<br />
* Online visual query builder<br />
* Online SQL Report Builder<br />
* Online SQL Job Scheduler<br />
* Export results to html, csv, pdf, google docs, amazon s3<br />
* SQL Auditing and Security <br />
* Schema/Object browser<br />
* SQL and data snippet sharing<br />
* Blob data viewer and editor<br />
<br />
=== Postico ===<br />
<br />
https://eggerapps.at/postico/<br />
<br />
Mac OS X<br />
<br />
Postico is a fully native Mac app for connecting to your PostgreSQL server. It supports encrypted connections via SSL and SSH to PostgreSQL 8.0 and later, including Amazon Redshift.<br />
<br />
Postico has a powerful table content editor with in-cell editing and form-based row editing in a sidebar. You can quickly filter tables by keywords or even complex SQL expressions.<br />
<br />
There's also a table structure editor for editing columns, types, default values, foreign keys, check constraints etc.<br />
<br />
Finally, there's a convenient SQL Query Editor with support for query history and syntax highlighting. It also has convenience features like auto-indent and shortcuts for comment line etc.</div>Jakobhttps://wiki.postgresql.org/index.php?title=Todo&diff=23800Todo2014-11-27T10:04:28Z<p>Jakob: /* Multi-Language Support */ added link to Todo:ICU</p>
<hr />
<div><div style="margin: 1ex 1em; float: right;"><br />
__TOC__<br />
</div><br />
<br />
This list contains '''known PostgreSQL bugs and feature requests''' and we hope it is complete. If you would like to work on an item, please read the [[Developer FAQ]] first. There is also a [[Development_information|development information page]].<br />
<br />
* {{TodoPending}} - marks ordinary, incomplete items<br />
* {{TodoEasy}} - marks items that are easier to implement<br />
* {{TodoDone}} - marks changes that are done, and will appear in the PostgreSQL 9.5 release.<br />
<br />
For help on editing this list, please see [[Talk:Todo]]. <b>Please do not add items here without discussion on the mailing list.</b><br />
<br />
== Development Process ==<br />
<br />
<b>WARNING for Developers:</b> Unfortunately this list does not contain all the information necessary for someone to start coding a feature. Some of these items might have become unnecessary since they were added --- others might be desirable but the implementation might be unclear. When selecting items listed below, be prepared to first discuss the value of the feature. '''Do not assume that you can select one, code it and then expect it to be committed.''' Always discuss design on Hackers list before starting to code. The flow should be:<br />
<br />
Desirability -> Design -> Implement -> Test -> Review -> Commit<br />
<br />
<div style="padding: 1ex 4em;"><br />
== Administration ==<br />
<br />
{{TodoItem<br />
|Allow administrators to cancel multi-statement idle transactions<br />
|This allows locks to be released, but it is complex to report the cancellation back to the client.<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-12/msg01340.php <nowiki>Cancelling idle in transaction state</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-12/msg00441.php <nowiki>Re: Cancelling idle in transaction state</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow administrators to cancel long-lived prepared transactions<br />
* [http://www.postgresql.org/message-id/20961.1403630269@sss.pgh.pa.us Re: idle_in_transaction_timeout]<br />
}}<br />
<br />
{{TodoItem<br />
|Check for unreferenced table files created by transactions that were in-progress when the server terminated abruptly<br />
* [http://archives.postgresql.org/pgsql-patches/2006-06/msg00096.php <nowiki>Removing unreferenced files</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Set proper permissions on non-system schemas during db creation<br />
|Currently all schemas are owned by the super-user because they are copied from the template1 database. However, since all objects are inherited from the template database, it is not clear that setting schemas to the db owner is correct.}}<br />
<br />
{{TodoItem<br />
|Allow log_min_messages to be specified on a per-module basis<br />
|This would allow administrators to see more detailed information from specific sections of the backend, e.g. checkpoints, autovacuum, etc. Another idea is to allow separate configuration files for each module, or allow arbitrary SET commands to be passed to them. See also [[Logging Brainstorm]].}}<br />
<br />
{{TodoItem<br />
|Simplify creation of partitioned tables<br />
|This would allow creation of partitioned tables without requiring creation of triggers or rules for INSERT/UPDATE/DELETE, and constraints for rapid partition selection. Options could include range and hash partition selection. See also [[Table partitioning]]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow custom variables to appear in pg_settings()<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-06/msg00850.php <nowiki>Re: count(*) performance improvement ideas</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Have custom variables be transaction-safe<br />
* {{MessageLink|4B577E9F.8000505@dunslane.net|Custom GUCs still a bit broken}}<br />
}}<br />
<br />
{{TodoItem<br />
|Implement the SQL-standard mechanism whereby REVOKE ROLE revokes only the privilege granted by the invoking role, and not those granted by other roles<br />
* [http://archives.postgresql.org/pgsql-bugs/2007-05/msg00010.php <nowiki>Re: Grantor name gets lost when grantor role dropped</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Prevent query cancel packets from being replayed by an attacker, especially when using SSL<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-08/msg00345.php <nowiki>Replay attack of query cancel</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Provide a way to query the log collector subprocess to determine the name of the currently active log file<br />
* [http://archives.postgresql.org/pgsql-general/2008-11/msg00418.php <nowiki>Current log files when rotating?</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow simpler reporting of the unix domain socket directory and allow easier configuration of its default location<br />
* http://archives.postgresql.org/pgsql-hackers/2010-10/msg01555.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-10/msg01482.php<br />
}}<br />
<br />
{{TodoItem<br />
|Improve logging of prepared transactions recovered during startup<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-11/msg00092.php <nowiki>&quot;recovering prepared transaction&quot; after server restart message</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow logging of replication and SPI/function-internal queries<br />
}}<br />
<br />
=== Configuration files ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Consider normalizing fractions in postgresql.conf, perhaps using '%'<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-06/msg00550.php <nowiki>Fractions in GUC variables</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow Kerberos to disable stripping of realms so we can check the username@realm against multiple realms<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-11/msg00009.php <nowiki>krb_match_realm patch</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve LDAP authentication configuration options<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-04/msg01745.php <nowiki>Proposed Patch - LDAPS support for servers on port 636 w/o TLS</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add external tool to auto-tune some postgresql.conf parameters<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-06/msg00000.php <nowiki>Re: Overhauling GUCS</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-11/msg00033.php <nowiki>Simple postgresql.conf wizard</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add 'hostgss' pg_hba.conf option to allow GSS link-level encryption<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-07/msg01454.php <nowiki>Re: Plans for 8.4</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Process pg_hba.conf keywords as case-insensitive<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-09/msg00432.php <nowiki>More robust pg_hba.conf parsing/error logging</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow pg_hba.conf to process include files<br />
* [http://www.postgresql.org/message-id/86fvnm5t44.fsf@jerry.enova.com HBA files w/include support]<br />
}}<br />
<br />
{{TodoItem<br />
|Create utility to compute accurate random_page_cost value<br />
* http://archives.postgresql.org/pgsql-performance/2011-04/msg00162.php<br />
* http://archives.postgresql.org/pgsql-performance/2011-04/msg00362.php<br />
}}<br />
<br />
{{TodoItem<br />
|Allow configuration files to be independently validated<br />
* http://archives.postgresql.org/pgsql-hackers/2011-03/msg01831.php<br />
* http://archives.postgresql.org/message-id/12666.1310774573@sss.pgh.pa.us<br />
}}<br />
<br />
{{TodoItem<br />
|Allow postgresql.conf settings to be accepted by backends even if some settings are invalid for those backends<br />
* http://archives.postgresql.org/pgsql-hackers/2011-04/msg00330.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-05/msg00375.php<br />
}}<br />
<br />
{{TodoItem<br />
|Allow all backends to receive postgresql.conf setting changes at the same time<br />
* http://archives.postgresql.org/pgsql-hackers/2011-04/msg00330.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-05/msg00375.php<br />
}}<br />
<br />
{{TodoItem<br />
|Allow synchronous_standby_names to be disabled after communication failure with all synchronous standby servers exceeds some timeout<br />
|This also requires successful execution of a synchronous notification command.<br />
* http://archives.postgresql.org/pgsql-hackers/2012-07/msg00409.php<br />
* [http://www.postgresql.org/message-id/BF2827DCCE55594C8D7A8F7FFD3AB7713DD9A622@SZXEML508-MBX.china.huawei.com Standalone synchronous master]<br />
}}<br />
<br />
{{TodoItem<br />
|Fix log_line_prefix to display the transaction id (%x) for statements not in a transaction block<br />
* Currently it displays zero.<br />
}}<br />
<br />
{{TodoItemEasy<br />
|If <tt>pg_hba.conf</tt> has changed since last config reload and we reject an authentication attempt, emit a <tt>HINT</tt> to the user and in the log<br />
* http://www.postgresql.org/message-id/53E75C0D.6050908@2ndquadrant.com<br />
* http://www.postgresql.org/message-id/20140810120713.GA18647@alap3.anarazel.de<br />
* http://www.postgresql.org/message-id/20140810130022.GE16422@tamriel.snowman.net<br />
}}<br />
<br />
{{TodoItem<br />
|Adjust rounding behavior for numeric GUC values<br />
* http://www.postgresql.org/message-id/53BE3815.4010203@po.ntts.co.jp<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== Tablespaces ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow a database in tablespace t1 with tables created in tablespace t2 to be used as a template for a new database created with default tablespace t2<br />
|Currently all objects in the default database tablespace must have default tablespace specifications. This is because new databases are created by copying directories. If you mix default tablespace tables and tablespace-specified tables in the same directory, creating a new database from such a mixed directory would create a new database with tables that had incorrect explicit tablespaces. To fix this would require modifying pg_class in the newly copied database, which we don't currently do.}}<br />
<br />
{{TodoItem<br />
|Allow reporting of which objects are in which tablespaces<br />
|This item is difficult because a tablespace can contain objects from multiple databases. There is a server-side function that returns the databases which use a specific tablespace, so this requires a tool that will call that function and connect to each database to find the objects in each database for that tablespace.}}<br />
<br />
{{TodoItem<br />
|Allow WAL replay of CREATE TABLESPACE to work when the directory structure on the recovery computer is different from the original}}<br />
<br />
{{TodoItem<br />
|Allow per-tablespace quotas}}<br />
<br />
{{TodoItem<br />
|Allow tablespaces on RAM-based partitions for unlogged tables<br />
* http://archives.postgresql.org/pgsql-advocacy/2011-05/msg00033.php<br />
}}<br />
<br />
{{TodoItem<br />
|Allow toast tables to be moved to a different tablespace<br />
* [http://archives.postgresql.org/pgsql-hackers/2011-05/msg00980.php]<br />
* {{messageLink|CAFEQCbH756DyyAPQ1ykh3+b+kE1-EhWRww1WO_x5v38C-uLnUg@mail.gmail.com|patch : Allow toast tables to be moved to a different tablespace}} (issues remain)<br />
* [http://archives.postgresql.org/message-id/CAFEQCbEq07OopgE5xFYv2Q3eMq45hRSJkjCBO+kvpJq9NEVhow@mail.gmail.com Allow toast tables to be moved to a different tablespace]<br />
}}<br />
<br />
{{TodoItem<br />
|Close race in DROP TABLESPACE on Windows<br />
* http://www.postgresql.org/message-id/20141108050423.GA642055@tornado.leadboat.com<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== Statistics Collector ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow statistics last vacuum/analyze execution times to be displayed without requiring track_counts to be enabled<br />
* [http://archives.postgresql.org/pgsql-docs/2007-04/msg00028.php <nowiki>row-level stats and last analyze time</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Clear table counters on TRUNCATE<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-04/msg00169.php <nowiki>Small TRUNCATE glitch</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Track number of WAL files ready to be archived in pg_stat_archiver <br />
* [http://www.postgresql.org/message-id/CAB7nPqSCrcZGGy_SmpT7ubSzVGNMtphYU1JJZYyapHuN46E-Tw@mail.gmail.com <nowiki>pg_stat_archiver missing feature</nowiki>]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== SSL ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow SSL authentication/encryption over unix domain sockets<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-12/msg00924.php <nowiki>Re: Spoofing as the postmaster</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow SSL key file permission checks to be optionally disabled when sharing SSL keys with other applications<br />
* [http://archives.postgresql.org/pgsql-bugs/2007-12/msg00069.php <nowiki>BUG #3809: SSL &quot;unsafe&quot; private key permissions bug</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow SSL CRL files to be re-read during configuration file reload, rather than requiring a server restart<br />
|Unlike SSL CRT files, CRL (Certificate Revocation List) files are updated frequently<br />
* [http://archives.postgresql.org/pgsql-general/2008-12/msg00832.php <nowiki>Automatic CRL reload</nowiki>]<br />
Alternatively or additionally supporting OCSP (online certificate security protocol) would provide real-time revocation discovery without reloading<br />
}}<br />
<br />
{{TodoItem<br />
| Allow automatic selection of SSL client certificates from a certificate store<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-05/msg00406.php <nowiki>Allow multiple certificates or keys in the postgresql.crt/.key files</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
| Send the full certificate server chain to the client<br />
* [http://archives.postgresql.org/pgsql-bugs/2009-12/msg00145.php BUG #5245: Full Server Certificate Chain Not Sent to client]<br />
}}<br />
<br />
{{TodoItem<br />
| Re-read SSL certificates on server reload<br />
* [http://www.postgresql.org/message-id/CAAS3tyLJcv-m0CqfMrrxUjwa9_FKscKuAKT9_L41wNuJZywM2Q@mail.gmail.com re-reading SSL certificates during server reload]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== Point-In-Time Recovery (PITR) ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow archive_mode to be changed without server restart?<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-10/msg01655.php <nowiki>Enabling archive_mode without restart</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider avoiding WAL switching via archive_timeout if there has been no database activity<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg01469.php <nowiki>archive_timeout behavior for no activity</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg00395.php <nowiki>Re: archive_timeout behavior for no activity</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow base backup from standby to continue when the standby is promoted.<br />
* [http://archives.postgresql.org/pgsql-hackers/2012-10/msg00239.php <nowiki>Re: Promoting a standby during base backup</nowiki>]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== Standby server mode ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
| Allow pg_xlogfile_name() to be used in recovery mode<br />
* [http://archives.postgresql.org/message-id/3f0b79eb1001190135vd9f62f1sa7868abc1ea61d12@mail.gmail.com <nowiki>Streaming replication and pg_xlogfile_name()</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
| Prevent variables inherited from the server environment from begin used for making streaming replication connections.<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg01011.php <nowiki>Re: Parameter name standby_mode</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
| Change walsender so that it applies per-role settings<br />
* http://archives.postgresql.org/pgsql-hackers/2010-09/msg00642.php<br />
}}<br />
<br />
{{TodoItem<br />
| Restructure configuration parameters for standby mode<br />
* http://archives.postgresql.org/pgsql-hackers/2010-09/msg01820.php<br />
}}<br />
<br />
{{TodoItemf<br />
| Allow time-delayed application of logs on the standby<br />
* http://archives.postgresql.org/pgsql-hackers/2011-04/msg00992.php<br />
}}<br />
<br />
{{TodoItem<br />
| Add -X parameter to pg_basebackup to specify a different directory for px_xlog, like initdb<br />
}}<br />
<br />
{{TodoItem<br />
| Add a new "eager" synchronous mode that starts out synchronous but reverts to asynchronous after a failure timeout period<br />
|This would require some type of command to be executed to alert administrators of this change.<br />
* http://archives.postgresql.org/pgsql-hackers/2011-12/msg01224.php<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
== Data Types ==<br />
<br />
{{TodoItem<br />
|Fix data types where equality comparison is not intuitive, e.g. box<br />
* http://archives.postgresql.org/pgsql-hackers/2011-10/msg01643.php<br />
}}<br />
<br />
{{TodoItem<br />
|Add support for public SYNONYMs<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-03/msg00519.php <nowiki>Proposal for SYNONYMS</nowiki>]<br />
* http://archives.postgresql.org/pgsql-hackers/2010-11/msg02043.php<br />
* http://archives.postgresql.org/pgsql-general/2010-12/msg00139.php<br />
}}<br />
<br />
{{TodoItem<br />
|Add support for SQL-standard GENERATED/IDENTITY columns<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-07/msg00543.php <nowiki>Re: Three weeks left until feature freeze</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-08/msg00038.php <nowiki>GENERATED ... AS IDENTITY, Was: Re: Feature Freeze</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-05/msg00344.php <nowiki>Behavior of GENERATED columns per SQL2003</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-patches/2007-05/msg00076.php <nowiki>Re: [HACKERS] Behavior of GENERATED columns per SQL2003</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-02/msg00604.php <nowiki>IDENTITY/GENERATED patch</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider placing all sequences in a single table, or create a system view<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-03/msg00008.php <nowiki>Re: newbie: renaming sequences task</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2012-02/msg00258.php Removing special case OID generation]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider a special data type for regular expressions<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-08/msg01067.php <nowiki>Why is there a tsquery data type?</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow renaming and deleting enumerated values from an existing enumerated data type<br />
}}<br />
<br />
{{TodoItem<br />
|Support scoped IPv6 addresses in the inet type<br />
* [http://archives.postgresql.org/pgsql-bugs/2007-05/msg00111.php <nowiki>strange problem with ip6</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Considering improving performance of computing CHAR() value lengths<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-06/msg00900.php <nowiki>char() overhead on read-only workloads not so insignifcant as the docs claim it is...</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg01787.php <nowiki>Re: [PATCH] backend: compare word-at-a-time in bcTruelen</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add overlaps geometric operators that ignore point overlaps<br />
* http://archives.postgresql.org/pgsql-hackers/2010-03/msg00861.php<br />
}}<br />
<br />
{{TodoItem<br />
|Remove or improve rounding in geometric comparison operators<br />
* http://archives.postgresql.org/message-id/9804.1346187849@sss.pgh.pa.us<br />
}}<br />
<br />
{{TodoItem<br />
| Add IMMUTABLE column attribute<br />
* http://archives.postgresql.org/pgsql-hackers/2011-11/msg00623.php<br />
}}<br />
<br />
=== Domains ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow functions defined as casts to domains to be called during casting<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-05/msg00072.php <nowiki>bug? non working casts for domain</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-09/msg01681.php <nowiki>TODO: Fix CREATE CAST on DOMAINs</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow values to be cast to domain types<br />
* [http://archives.postgresql.org/pgsql-hackers/2003-06/msg01206.php <nowiki>Domain casting still doesn't work right</nowiki>] <br />
* [http://archives.postgresql.org/pgsql-hackers/2007-08/msg00289.php <nowiki>domain casting?</nowiki>]<br />
* http://archives.postgresql.org/pgsql-hackers/2011-05/msg00812.php<br />
}}<br />
<br />
{{TodoItem<br />
|Make domains work better with polymorphic functions<br />
* [http://archives.postgresql.org/message-id/4887.1228700773@sss.pgh.pa.us Polymorphic types vs. domains]<br />
* [http://archives.postgresql.org/message-id/15535.1238774571@sss.pgh.pa.us some difficulties with fixing it]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== Dates and Times ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow infinite intervals just like infinite timestamps<br />
* http://archives.postgresql.org/pgsql-hackers/2011-11/msg00076.php<br />
}}<br />
<br />
{{TodoItem<br />
|Determine how to represent date/time field extraction on infinite timestamps<br />
* [http://archives.postgresql.org/message-id/CA+mi_8bda-Fnev9iXeUbnqhVaCWzbYhHkWoxPQfBca9eDPpRMw@mail.gmail.com extract(epoch from infinity) is not 0]<br />
* [http://archives.postgresql.org/message-id/CADAkt-icuESH16uLOCXbR-dKpcvwtUJE4JWXnkdAjAAwP6j12g@mail.gmail.com converting between infinity timestamp and float8]<br />
}}<br />
<br />
<br />
{{TodoItem<br />
|Allow TIMESTAMP WITH TIME ZONE to store the original timezone information, either zone name or offset from UTC<br />
|If the TIMESTAMP value is stored with a time zone name, interval computations should adjust based on the time zone rules. <br />
* [http://archives.postgresql.org/pgsql-hackers/2004-10/msg00705.php <nowiki>timestamp with time zone a la sql99</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Have timestamp subtraction not call justify_hours()?<br />
* [http://archives.postgresql.org/pgsql-sql/2006-10/msg00059.php <nowiki>timestamp subtraction (was Re: formatting intervals with to_char)</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add function to allow the creation of timestamps using parameters<br />
* http://archives.postgresql.org/pgsql-performance/2010-06/msg00232.php<br />
}}<br />
<br />
{{TodoItem<br />
|Allow a comma to denote fractional seconds in ISO-8601-compliant times (and timestamps)<br />
* http://www.postgresql.org/message-id/7D5AC9AB-238D-4FE7-8857-18D98190A4D9@justatheory.com<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== Arrays ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Add support for arrays of domains<br />
* [http://archives.postgresql.org/pgsql-patches/2007-05/msg00114.php <nowiki>Re: updated WIP: arrays of composites</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow single-byte header storage for array elements}}<br />
<br />
{{TodoItem<br />
|Add function to detect if an array is empty<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-11/msg00475.php <nowiki>Re: array_length()</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve handling of NULLs in arrays<br />
* [http://archives.postgresql.org/pgsql-bugs/2008-11/msg00009.php <nowiki>BUG #4509: array_cat's null behaviour is inconsistent</nowiki>]<br />
* http://archives.postgresql.org/pgsql-hackers/2010-11/msg01040.php<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== Binary Data ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Improve vacuum of large objects, like contrib/vacuumlo?}}<br />
<br />
{{TodoItem<br />
|Auto-delete large objects when referencing row is deleted<br />
|contrib/lo offers this functionality.}}<br />
<br />
{{TodoItem<br />
|Allow read/write into TOAST values like large objects<br />
|Writing might require the TOAST column to be stored EXTERNAL.<br />
* http://archives.postgresql.org/pgsql-hackers/2011-06/msg00049.php<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== MONEY Data Type ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Add locale-aware MONEY type, and support multiple currencies<br />
* [http://archives.postgresql.org/pgsql-general/2005-08/msg01432.php <nowiki>A real currency type</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-03/msg01181.php <nowiki>Money type todos?</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|MONEY dumps in a locale-specific format making it difficult to restore to a system with a different locale}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== Text Search ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow dictionaries to change the token that is passed on to later dictionaries<br />
* [http://archives.postgresql.org/pgsql-patches/2007-11/msg00081.php <nowiki>a tsearch2 (8.2.4) dictionary that only filters out stopwords</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Exact phrase search, <br />
* [http://www.sai.msu.su/~megera/wiki/2009-08-12 <nowiki>Algebra for full-text queries</nowiki>]<br />
* [http://www.sai.msu.su/~megera/postgres/talks/2009.pdf <nowiki>Some recent advances in<br />
full-text search</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider a function-based API for '@@' searches<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-11/msg00511.php <nowiki>Some recent advances in<br />
full-text search</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve text search error messages<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-10/msg00966.php <nowiki>Poorly designed tsearch NOTICEs</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-11/msg01146.php <nowiki>Re: Poorly designed tsearch NOTICEs</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider changing error to warning for strings larger than one megabyte<br />
* [http://archives.postgresql.org/pgsql-bugs/2008-02/msg00190.php <nowiki>BUG #3975: tsearch2 index should not bomb out of 1Mb limit</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-patches/2008-03/msg00062.php <nowiki>Re: [BUGS] BUG #3975: tsearch2 index should not bomb out of 1Mb limit</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|tsearch and tsdicts regression tests fail in Turkish locale on glibc<br />
* [http://archives.postgresql.org/message-id/49749645.5070801@gmx.net tsearch with Turkish locale]<br />
}}<br />
<br />
{{TodoItem<br />
|tsquery negator operator treated as part of lexeme<br />
* [http://archives.postgresql.org/pgsql-bugs/2009-06/msg00346.php BUG #4887: inclusion operator (@>) on tsqeries behaves not conforming to documentation]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve handling of dash and plus signs in email address user names, and perhaps improve URL parsing<br />
* http://archives.postgresql.org/pgsql-hackers/2010-10/msg00772.php<br />
* [http://archives.postgresql.org/message-id/E1Ri8il-0008Ct-9p@wrigleys.postgresql.org tsearch does not recognize all valid emails]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve default parser, to more easily allow adding new tokens<br />
* http://archives.postgresql.org/message-id/23485.1297727826@sss.pgh.pa.us<br />
}}<br />
<br />
{{TodoItem<br />
|Add additional support functions<br />
* http://archives.postgresql.org/pgsql-hackers/2011-06/msg00319.php<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== XML ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow XML arrays to be cast to other data types<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-09/msg00981.php <nowiki>proposal casting from XML[] to int[], numeric[], text[]</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-10/msg00231.php <nowiki>Re: proposal casting from XML[] to int[], numeric[], text[]</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-11/msg00471.php <nowiki>Re: proposal casting from XML[] to int[], numeric[], text[]</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add XML Schema validation and xmlvalidate functions (SQL:2008)}}<br />
<br />
{{TodoItem<br />
|Add xmlvalidatedtd variant to support validating against a DTD?}}<br />
<br />
{{TodoItem<br />
|Relax-NG validation; libxml2 supports this already}}<br />
<br />
{{TodoItem<br />
|Allow reliable XML operation non-UTF8 server encodings (xpath(), in particular, is known to not work)<br />
* [http://archives.postgresql.org/pgsql-bugs/2009-01/msg00135.php <nowiki>BUG #4622: xpath only work in utf-8 server encoding</nowiki>] <br />
* http://archives.postgresql.org/message-id/4110.1238973350@sss.pgh.pa.us}}<br />
<br />
{{TodoItem<br />
|Add functions from SQL:2006: XMLDOCUMENT, XMLCAST, XMLTEXT}}<br />
<br />
{{TodoItem<br />
|Add XMLNAMESPACES support in XMLELEMENT and elsewhere}}<br />
<br />
{{TodoItem<br />
|Move XSLT from contrib/xml2 to a more reasonable location<br />
* http://archives.postgresql.org/pgsql-hackers/2010-08/msg00539.php<br />
}}<br />
<br />
{{TodoItem<br />
|Report errors returned by the XSLT library<br />
* http://archives.postgresql.org/pgsql-hackers/2010-08/msg00562.php<br />
}}<br />
<br />
{{TodoItem<br />
|Improve the XSLT parameter passing API<br />
* http://archives.postgresql.org/pgsql-hackers/2010-08/msg00416.php<br />
}}<br />
<br />
{{TodoItem<br />
|XML Canonical: Convert XML documents to canonical form to compare them. libxml2 has support for this.}}<br />
<br />
{{TodoItem<br />
|Add pretty-printed XML output option<br />
|Parse a document and serialize it back in some indented form. libxml2 might support this.}}<br />
<br />
{{TodoItem<br />
|Add XMLQUERY (from the SQL/XML standard)}}<br />
<br />
{{TodoItem<br />
|Allow XML shredding<br />
|In some cases shredding could be better option (if there is no need to keep XML docs entirely, e.g. if we have already developed tools that understand only relational data. This would be a separate module that implements annotated schema decomposition technique, similar to DB2 and SQL Server functionality.}}<br />
<br />
{{TodoItem<br />
|Fix Nested or repeated xpath() that apparently mess up namespaces [http://archives.postgresql.org/pgsql-bugs/2008-03/msg00097.php] [http://archives.postgresql.org/pgsql-bugs/2008-03/msg00144.php] [http://archives.postgresql.org/pgsql-general/2008-03/msg00295.php] [http://archives.postgresql.org/pgsql-bugs/2008-07/msg00054.php] [http://archives.postgresql.org/message-id/004f01c90e91$138e9d10$3aabd730$@anstett@iaas.uni-stuttgart.de]}}<br />
<br />
{{TodoItem<br />
|XPath: Adding the <x> at the root causes problems [http://archives.postgresql.org/pgsql-bugs/2008-05/msg00184.php] [http://archives.postgresql.org/pgsql-bugs/2008-07/msg00054.php] [http://archives.postgresql.org/pgsql-general/2008-07/msg00613.php]}}<br />
<br />
{{TodoItem<br />
|xpath_table needs to be implemented/implementable to get rid of contrib/xml2 [http://archives.postgresql.org/pgsql-general/2008-05/msg00823.php]}}<br />
<br />
{{TodoItem<br />
|xpath_table is pretty broken anyway [http://archives.postgresql.org/pgsql-hackers/2010-02/msg02424.php]}}<br />
<br />
{{TodoItem<br />
|better handling of XPath data types [http://archives.postgresql.org/pgsql-hackers/2008-06/msg00616.php] [http://archives.postgresql.org/message-id/004a01c90e90$4b986d90$e2c948b0$@anstett@iaas.uni-stuttgart.de]}}<br />
<br />
{{TodoItem<br />
|Improve handling of PIs and DTDs in xmlconcat() [http://archives.postgresql.org/message-id/200904211211.n3LCB09p008988@wwwmaster.postgresql.org]}}<br />
<br />
{{TodoItem<br />
|Restructure XML and /contrib/xml2 functionality<br />
* http://archives.postgresql.org/pgsql-hackers/2011-02/msg02314.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-03/msg00017.php<br />
}}<br />
<br />
{{TodoItem<br />
|Verify Xpath escaping behavior<br />
* [http://www.postgresql.org/message-id/E1VOXZv-0008Q9-0Z@wrigleys.postgresql.org Xpath behaviour unintuitive / arguably wrong]<br />
* [http://www.postgresql.org/message-id/CAAY5AM1L83y79rtOZAUJioREO6n4%3DXAFKcGu6qO3hCZE1yJytg@mail.gmail.com xpath missing entity decoding - bug or feature]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
== Functions ==<br />
<br />
{{TodoItem<br />
|Enforce typmod for function inputs, function results and parameters for spi_prepare'd statements called from PLs<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-01/msg01403.php <nowiki>Re: BUG #2917: spi_prepare doesn't accept typename aliases</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-11/msg01160.php <nowiki>RFC for adding typmods to functions</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Fix IS OF so it matches the ISO specification, and add documentation<br />
* [http://archives.postgresql.org/pgsql-patches/2003-08/msg00060.php <nowiki>Re: [HACKERS] IS OF</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-02/msg00060.php <nowiki>ToDo: add documentation for operator IS OF</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Implement Boyer-Moore searching in LIKE queries<br />
* {{messageLink|27645.1220635769@sss.pgh.pa.us|TODO item: Implement Boyer-Moore searching (First time hacker)}}<br />
}}<br />
<br />
{{TodoItem<br />
|Prevent malicious functions from being executed with the permissions of unsuspecting users<br />
|Index functions are safe, so VACUUM and ANALYZE are safe too. Triggers, CHECK and DEFAULT expressions, and rules are still vulnerable. <br />
* [http://archives.postgresql.org/pgsql-hackers/2008-01/msg00268.php <nowiki>Some notes about the index-functions security vulnerability</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Reduce memory usage of aggregates in set returning functions<br />
* [http://archives.postgresql.org/pgsql-performance/2008-01/msg00031.php <nowiki>Re: Performance of aggregates over set-returning functions</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Fix /contrib/ltree operator<br />
* [http://archives.postgresql.org/pgsql-bugs/2007-11/msg00044.php <nowiki>BUG #3720: wrong results at using ltree</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Fix /contrib/btree_gist's implementation of inet indexing<br />
* [http://archives.postgresql.org/pgsql-bugs/2010-10/msg00099.php <nowiki>BUG #5705: btree_gist: Index on inet changes query result</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|<nowiki>Fix inconsistent precedence of =, &gt;, and &lt; compared to &lt;&gt;, &gt;=, and &lt;=</nowiki><br />
* [http://archives.postgresql.org/pgsql-bugs/2007-12/msg00145.php <nowiki>BUG #3822: Nonstandard precedence for comparison operators</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Fix regular expression bug when using complex back-references<br />
* [http://archives.postgresql.org/pgsql-bugs/2007-10/msg00000.php <nowiki>BUG #3645: regular expression back references seem broken</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Have /contrib/dblink reuse unnamed connections<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-10/msg00895.php <nowiki>dblink un-named connection doesn't get re-used</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve formatting of pg_get_viewdef() output<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-01/msg01648.php <nowiki>pg_get_viewdef formattiing</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-08/msg01885.php <nowiki>Re: pretty print viewdefs</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2011-12/msg00906.php reprise: pretty print viewdefs]<br />
}}<br />
<br />
{{TodoItem<br />
|Add function to dump pg_depend information cleanly<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-09/msg00226.php <nowiki>Elementary dependency look-up</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add function to allow easier transaction id comparisons<br />
* http://archives.postgresql.org/pgsql-hackers/2011-11/msg00786.php<br />
}}<br />
<br />
{{TodoItemDone<br />
| Add <tt>generate_series(numeric, numeric)</tt><br />
* http://www.postgresql.org/message-id/53A8E96E.9060507@2ndquadrant.com<br />
}}<br />
<br />
{{TodoItemEasy<br />
| Add an <tt>ereport</tt> wrapper callable from SQL. Note that you'll need to use the <tt>anyelement</tt> hack to deal with the need for a return type, e.g. <tt>ereport(text, anyelement) returns anyelement</tt>.<br />
* http://www.postgresql.org/message-id/53A8E96E.9060507@2ndquadrant.com<br />
}}<br />
<br />
{{TodoItemEasy<br />
| Add a <tt>hex</tt> option to <tt>decode(...)</tt> and <tt>encode(...)</tt>, so you can encode/decode hex strings<br />
* http://www.postgresql.org/message-id/53A8E96E.9060507@2ndquadrant.com<br />
}}<br />
<br />
{{TodoItemDone<br />
| Add a built-in <tt>array_agg(anyarray)</tt> or similar, that can aggregate 1-dimensional arrays into a 2-dimensional array.<br />
* http://www.postgresql.org/message-id/53A8E96E.9060507@2ndquadrant.com<br />
}}<br />
<br />
{{TodoItemEasy<br />
| Add a built-in <tt>array_cat_agg</tt> (naming to be bikeshedded) that concatenates input 1-dim arrays into a single long 1-dim array<br />
* http://www.postgresql.org/message-id/53A8E96E.9060507@2ndquadrant.com<br />
}}<br />
<br />
=== Character Formatting ===<br />
<br />
{{TodoSubsection}}<br />
{{TodoItem<br />
|Allow to_date() and to_timestamp() to accept localized month names}}<br />
<br />
{{TodoItem<br />
|Add missing parameter handling in to_char()<br />
* [http://archives.postgresql.org/pgsql-hackers/2005-12/msg00948.php <nowiki>Re: to_char and i18n</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Throw an error from to_char() instead of printing a string of "#" when a number doesn't fit in the desired output format.<br />
* discussed in [http://archives.postgresql.org/message-id/37ed240d0907290836w42187222n18664dfcbcb445b1@mail.gmail.com "to_char, support for EEEE format"]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow to_char() on interval values to accumulate the highest unit requested<br />
|2= Some special format flag would be required to request such accumulation. Such functionality could also be added to EXTRACT. Prevent accumulation that crosses the month/day boundary because of the uneven number of days in a month.<br />
* to_char(INTERVAL '1 hour 5 minutes', 'MI') =&gt; 65<br />
* to_char(INTERVAL '43 hours 20 minutes', 'MI' ) =&gt; 2600<br />
* to_char(INTERVAL '43 hours 20 minutes', 'WK:DD:HR:MI') =&gt; 0:1:19:20<br />
* to_char(INTERVAL '3 years 5 months','MM') =&gt; 41<br />
}}<br />
<br />
{{TodoItem<br />
|Fix to_number() handling for values not matching the format string<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-09/msg01447.php <nowiki>Re: numeric_to_number() function skipping some digits</nowiki>]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
== Multi-Language Support ==<br />
<br />
{{TodoItem<br />
|Add NCHAR (as distinguished from ordinary varchar)<br />
* [http://www.postgresql.org/message-id/A756FAD7EDC2E24F8CAB7E2F3B5375E918B12BC0@FALEX03.au.fjanz.com UTF8 national character data type support WIP patch and list of open issues.]<br />
}}<br />
<br />
{{TodoItem<br />
|Add a cares-about-collation column to pg_proc, so that unresolved-collation errors can be thrown at parse time<br />
* [http://archives.postgresql.org/pgsql-hackers/2011-03/msg01520.php <nowiki>Open issues for collations</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Integrate collations with text search configurations<br />
* [http://archives.postgresql.org/message-id/28887.1303579034@sss.pgh.pa.us <nowiki>Some TODO items for collations</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Integrate collations with to_char() and related functions<br />
* [http://archives.postgresql.org/message-id/28887.1303579034@sss.pgh.pa.us <nowiki>Some TODO items for collations</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Support collation-sensitive equality and hashing functions<br />
* [http://archives.postgresql.org/pgsql-hackers/2011-06/msg00472.php <nowiki> contrib/citext versus collations</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add a LOCALE option to CREATE DATABASE, as a shorthand<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-04/msg00119.php <nowiki> Re: 8.4 open items list</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Support multiple simultaneous character sets, per SQL:2008}}<br />
<br />
{{TodoItem<br />
|Improve UTF8 combined character handling?}}<br />
<br />
{{TodoItem<br />
|Add octet_length_server() and octet_length_client()}}<br />
<br />
{{TodoItem<br />
|Make octet_length_client() the same as octet_length()?}}<br />
<br />
{{TodoItem<br />
|Fix problems with wrong runtime encoding conversion for NLS message files}}<br />
<br />
{{TodoItem<br />
|Add URL to more complete multi-byte regression tests<br />
* [http://archives.postgresql.org/pgsql-hackers/2005-07/msg00272.php <nowiki>Multi-byte and client side character encoding tests for copy command..</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Fix contrib/fuzzystrmatch to work with multibyte encodings<br />
* [http://archives.postgresql.org/pgsql-bugs/2009-04/msg00047.php <nowiki> soundex function returns UTF-16 characters</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-04/msg00138.php <nowiki> dmetaphone woes</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Change memory allocation for multi-byte functions so memory is allocated inside conversion functions<br />
|Currently we preallocate memory based on worst-case usage.}}<br />
<br />
{{TodoItem<br />
|Add ability to use case-insensitive regular expressions on multi-byte characters<br />
|Currently it works for UTF-8, but not other multi-byte encodings<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-12/msg00433.php <nowiki>Regexps vs. locale</nowiki>]<br />
* {{MessageLink|20091201210024.B1393753FB7@cvs.postgresql.org|A partial solution for UTF-8}}<br />
}}<br />
<br />
{{TodoItem<br />
|Improve encoding of connection startup messages sent to the client<br />
|Currently some authentication error messages are sent in the server encoding<br />
* [http://archives.postgresql.org/pgsql-general/2008-12/msg00801.php <nowiki>encoding of PostgreSQL messages</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-general/2009-01/msg00005.php <nowiki>Re: encoding of PostgreSQL messages</nowiki>]<br />
* [http://www.postgresql.org/message-id/20131220030725.GA1411150@tornado.leadboat.com multibyte messages are displayed incorrectly on the client]<br />
}}<br />
<br />
{{TodoItem<br />
|More sensible support for Unicode combining characters, normal forms<br />
* http://archives.postgresql.org/message-id/200904141532.44618.peter_e@gmx.net<br />
}}<br />
<br />
{{TodoItem<br />
|Detect operating system collation changes, or make Postgres immune to them<br />
* http://www.postgresql.org/message-id/F8268DB6-B50F-429F-8289-DA8FFA5F22BA@tripadvisor.com<br />
* See also [[Todo:ICU]]<br />
}}<br />
<br />
== Views and Rules ==<br />
<br />
{{TodoItem<br />
|Allow VIEW/RULE recompilation when the underlying tables change<br />
|This is both difficult and controversial.<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-12/msg01723.php Re: About "Allow VIEW/RULE recompilation when the underlying tables change"]<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-12/msg01724.php Re: About "Allow VIEW/RULE recompilation when the underlying tables change2"]<br />
* [http://archives.postgresql.org/message-id/CACk%3DU9NFSzWrEba8G5dZ%3DTZLy3_hx3QXGyCcKVWT%3D4iA1FjMuA@mail.gmail.com VIEW still referring to old name of field]<br />
* [http://www.postgresql.org/message-id/87mwe4k46y.fsf@commandprompt.com Re-create dependent views on ALTER TABLE ALTER COLUMN ... TYPE?]<br />
}}<br />
{{TodoItem<br />
|Make it possible to use RETURNING together with conditional DO INSTEAD rules, such as for partitioning setups<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-09/msg00577.php <nowiki>RETURNING and DO INSTEAD ... Intentional or not?</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve ability to modify views via ALTER TABLE<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-05/msg00691.php <nowiki>Re: idea: storing view source in system catalogs</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-07/msg01410.php <nowiki>modifying views</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-08/msg00300.php <nowiki>Re: patch: Add columns via CREATE OR REPLACE VIEW</nowiki>]<br />
}}<br />
<br />
== SQL Commands ==<br />
<br />
{{TodoItem<br />
|Add CORRESPONDING BY to UNION/INTERSECT/EXCEPT<br />
* [http://dissipatedheat.com/2011/11/10/how-not-to-write-a-patch-for-postgresql/ How not to write this patch.]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve type determination of unknown (NULL or quoted literal) result columns for UNION/INTERSECT/EXCEPT<br />
* [http://archives.postgresql.org/message-id/9799.1302719551@sss.pgh.pa.us <nowiki>UNION construct type cast gives poor error message</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add ROLLUP, CUBE, GROUPING SETS options to GROUP BY<br />
* [http://www.postgresql.org/message-id/87iolhkvsq.fsf@news-spur.riddles.org.uk <nowiki> Final patch for GROUPING SETS </nowiki>]<br />
* [http://www.postgresql.org/message-id/CAOeZVidmVRe2jU6aMk_5qkxnB7dfmPROzM7Ur8JPW5j8Y5X-Lw@mail.gmail.com <nowiki>WIP: Partial GS support </nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-10/msg00838.php <nowiki>WIP: grouping sets support</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-05/msg00466.php <nowiki>Implementation of GROUPING SETS (T431: Extended grouping capabilities)</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow prepared transactions with temporary tables created and dropped in the same transaction, and when an ON COMMIT DELETE ROWS temporary table is accessed<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-03/msg00047.php <nowiki>Re: &quot;could not open relation 1663/16384/16584: No such file or directory&quot; in a specific combination of transactions with temp tables</nowiki>]<br />
* [http://archives.postgresql.org/message-id/492543D5.9050904@enterprisedb.com A suggestion on how to implement this]<br />
}}<br />
<br />
{{TodoItem<br />
|Add a GUC variable to warn about non-standard SQL usage in queries}}<br />
<br />
{{TodoItem<br />
|Add SQL-standard MERGE/REPLACE/UPSERT command<br />
|MERGE is typically used to merge two tables. An UPSERT command does an INSERT, or in the event of a would-be duplicate violation, an UPDATE. See [[UPSERT]] for notes on the implementation details.<br />
}}<br />
<br />
{{TodoItem<br />
|Add NOVICE output level for helpful messages<br />
|For example, have it warn about unjoined tables. This could also control automatic sequence/index creation messages.<br />
}}<br />
<br />
{{TodoItem<br />
|Allow NOTIFY in rules involving conditionals}}<br />
<br />
{{TodoItem<br />
|Allow LISTEN on patterns<br />
* http://www.postgresql.org/message-id/52693FC5.7070507@gmail.com<br />
}}<br />
<br />
{{TodoItem<br />
|Allow EXPLAIN to identify tables that were skipped because of constraint_exclusion<br />
}}<br />
<br />
{{TodoItem<br />
|Simplify dropping roles that have objects in several databases}}<br />
<br />
{{TodoItem<br />
|Allow the count returned by SELECT, etc to be represented as an int64 to allow a higher range of values}}<br />
<br />
{{TodoItem<br />
|Add support for WITH RECURSIVE ... CYCLE<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-10/msg00291.php <nowiki>WITH RECURSIVE ... CYCLE in vanilla SQL: issues with arrays of rows</nowiki>]}}<br />
<br />
{{TodoItem<br />
|Add DEFAULT .. AS OWNER so permission checks are done as the table owner<br />
|This would be useful for SERIAL nextval() calls and CHECK constraints.}}<br />
<br />
{{TodoItem<br />
|Allow DISTINCT to work in multiple-argument aggregate calls}}<br />
<br />
{{TodoItem<br />
|Add comments on system tables/columns using the information in catalogs.sgml<br />
|Ideally the information would be pulled from the SGML file automatically.}}<br />
<br />
{{TodoItem<br />
|Prevent the specification of conflicting transaction read/write options<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-01/msg00684.php <nowiki>Re: SET TRANSACTION and SQL Standard</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow DELETE and UPDATE to be used with LIMIT and ORDER BY<br />
* http://archives.postgresql.org/pgadmin-hackers/2010-04/msg00078.php<br />
* http://archives.postgresql.org/pgsql-hackers/2010-11/msg01997.php<br />
* http://archives.postgresql.org/pgsql-hackers/2010-12/msg00021.php<br />
}}<br />
<br />
{{TodoItem<br />
|Allow PREPARE of cursors}}<br />
<br />
{{TodoItem<br />
|Have DISCARD PLANS discard plans cached by functions<br />
|DISCARD all should do the same.<br />
* http://archives.postgresql.org/pgsql-hackers/2011-01/msg00431.php<br />
}}<br />
<br />
{{TodoItem<br />
|Avoid multiple-evaluation of BETWEEN and IN arguments containing volatile expressions<br />
* http://archives.postgresql.org/message-id/4D95B605.2020709@enterprisedb.com<br />
}}<br />
<br />
{{TodoItem<br />
|Fix nested CASE-WHEN constructs<br />
* http://archives.postgresql.org/message-id/4DDCEEB8.50602@enterprisedb.com<br />
}}<br />
<br />
{{TodoItem<br />
|IS NULL testing of nested ROW() values is inconsistent<br />
* http://www.postgresql.org/message-id/50B3D11F.20408@2ndQuadrant.com<br />
}}<br />
<br />
=== CREATE ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow CREATE TABLE AS to determine column lengths for complex expressions like SELECT col1 || col2}}<br />
<br />
{{TodoItem<br />
|Have WITH CONSTRAINTS also create constraint indexes<br />
* [http://archives.postgresql.org/pgsql-patches/2007-04/msg00149.php <nowiki>Re: CREATE TABLE LIKE INCLUDING INDEXES support</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Move NOT NULL constraint information to pg_constraint<br />
|Currently NOT NULL constraints are stored in pg_attribute without any designation of their origins, e.g. primary keys. One manifest problem is that dropping a PRIMARY KEY constraint does not remove the NOT NULL constraint designation. Another issue is that we should probably force NOT NULL to be propagated from parent tables to children, just as CHECK constraints are. (But then does dropping PRIMARY KEY affect children?)<br />
* http://archives.postgresql.org/message-id/19768.1238680878@sss.pgh.pa.us<br />
* http://archives.postgresql.org/message-id/200909181005.n8IA5Ris061239@wwwmaster.postgresql.org<br />
* http://archives.postgresql.org/pgsql-hackers/2011-07/msg01223.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-07/msg00358.php<br />
}}<br />
<br />
{{TodoItem<br />
|Prevent concurrent CREATE TABLE from sometimes returning a cryptic error message<br />
* [http://archives.postgresql.org/pgsql-bugs/2007-10/msg00169.php <nowiki>BUG #3692: Conflicting create table statements throw unexpected error</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add CREATE SCHEMA ... LIKE that copies a schema}}<br />
<br />
{{TodoItem<br />
|Fix CREATE OR REPLACE FUNCTION to not leave objects depending on the function in inconsistent state<br />
* [http://archives.postgresql.org/pgsql-general/2008-08/msg00985.php indexes on functions and create or replace function]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow temporary tables to exist as empty by default in all sessions<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-07/msg00006.php <nowiki>what is difference between LOCAL and GLOBAL TEMP TABLES in PostgreSQL</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-04/msg01329.php <nowiki>idea: global temp tables</nowiki>]<br />
* [http://archives.postgresql.org//pgsql-hackers/2009-05/msg00016.php <nowiki>Re: idea: global temp tables</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-04/msg01098.php <nowiki>global temporary tables</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2012-04/msg01148.php Temporary tables under hot standby]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow the creation of "distinct" types<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-10/msg01647.php <nowiki>Distinct types</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider analyzing temporary tables when they are first used in a query<br />
|Autovacuum cannot analyze or vacuum temporary tables.<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-04/msg00416.php <nowiki>autovacuum and temp tables support</nowiki>]<br />
}}<br />
<br />
{{TodoItemDone<br />
|Allow an unlogged table to be changed to logged<br />
* http://archives.postgresql.org/pgsql-hackers/2011-01/msg00315.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-04/msg00437.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-05/msg00323.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-06/msg00237.php<br />
* [http://www.postgresql.org/message-id/CAFcNs+peg3VPG2%3Dv6Lu3vfCDP8mt7cs6-RMMXxjxWNLREgSRVQ@mail.gmail.com make an unlogged table logged]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== UPDATE ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|<nowiki>Allow UPDATE tab SET ROW (col, ...) = (SELECT...)</nowiki><br />
* [http://archives.postgresql.org/pgsql-hackers/2006-07/msg01308.php <nowiki>Re: [PATCHES] extension for sql update</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-03/msg00865.php <nowiki>UPDATE using sub selects</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-patches/2007-04/msg00315.php <nowiki>UPDATE using sub selects</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-patches/2008-03/msg00237.php <nowiki>Re: UPDATE using sub selects</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Research self-referential UPDATEs that see inconsistent row versions in read-committed mode<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-05/msg00507.php <nowiki>Concurrently updating an updatable view</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-06/msg00016.php <nowiki>Re: Do we need a TODO? (was Re: Concurrently updating anupdatable view)</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve performance of EvalPlanQual mechanism that rechecks already-updated rows<br />
|This is related to the previous item, which questions whether it even has the right semantics<br />
* [http://archives.postgresql.org/pgsql-bugs/2008-09/msg00045.php <nowiki>BUG #4401: concurrent updates to a table blocks one update indefinitely</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-bugs/2009-07/msg00302.php <nowiki>BUG #4945: Parallel update(s) gone wild</nowiki>]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== ALTER ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Have ALTER TABLE RENAME of a SERIAL column rename the sequence<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-03/msg00008.php <nowiki>Re: newbie: renaming sequences task</nowiki>]<br />
* [http://archives.postgresql.org/message-id/CADLWmXUV4LbLhMZL8rYMhCy72aZZLB5BSARPQVgoX0BrxA0FFg@mail.gmail.com renaming implicit sequences]<br />
}}<br />
<br />
{{TodoItem<br />
|Have ALTER SEQUENCE RENAME rename the sequence name stored in the sequence table<br />
* [http://archives.postgresql.org/pgsql-bugs/2007-09/msg00092.php <nowiki>BUG #3619: Renaming sequence does not update its 'sequence_name' field</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-bugs/2007-10/msg00007.php <nowiki>Re: BUG #3619: Renaming sequence does not update its 'sequence_name' field</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-03/msg00008.php <nowiki>Re: newbie: renaming sequences task</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add ALTER DOMAIN to modify the underlying data type}}<br />
<br />
{{TodoItem<br />
|Allow ALTER TABLESPACE to move the tablespace to different directories}}<br />
<br />
{{TodoItem<br />
|Allow moving system tables to other tablespaces, where possible<br />
|Currently non-global system tables must be in the default database tablespace. Global system tables can never be moved.}}<br />
<br />
{{TodoItem<br />
|Have ALTER INDEX update the name of a constraint using that index}}<br />
<br />
{{TodoItem<br />
|Allow column display reordering by recording a display, storage, and permanent id for every column?<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-12/msg00782.php <nowiki>Re: column ordering, was Re: [PATCHES] Enums patch v2</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-11/msg01029.php <nowiki>Column reordering in pg_dump</nowiki>]<br />
* http://archives.postgresql.org/message-id/1324412114-sup-9608@alvh.no-ip.org<br />
* [http://www.postgresql.org/message-id/CAApHDvqhnuznxd4xVMFDcGn+nHVYyUtJ-TvbRsOuR%3DPaVbbGqw@mail.gmail.com logical column order and physical column order]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow deactivating (and reactivating) indexes via ALTER TABLE<br />
* http://archives.postgresql.org/pgsql-hackers/2010-12/msg01191.php<br />
}}<br />
<br />
{{TodoItem<br />
|Add ALTER OPERATOR ... RENAME<br />
|needs to consider effects of changing operator precedence<br />
* [http://archives.postgresql.org/message-id/1322948781.26266.9.camel@vanquo.pezone.net Missing rename support]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== CLUSTER ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Automatically maintain clustering on a table<br />
|This might require some background daemon to maintain clustering during periods of low usage. It might also require tables to be only partially filled for easier reorganization. Another idea would be to create a merged heap/index data file so an index lookup would automatically access the heap data too. A third idea would be to store heap rows in hashed groups, perhaps using a user-supplied hash function.<br />
* [http://archives.postgresql.org/pgsql-performance/2004-08/msg00350.php <nowiki>Equivalent praxis to CLUSTERED INDEX?</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-03/msg00155.php <nowiki>Re: Grouped Index Tuples</nowiki>]<br />
* http://community.enterprisedb.com/git/<br />
* [http://archives.postgresql.org/pgsql-performance/2009-10/msg00346.php <nowiki>Re: maintain_cluster_order_v5.patch</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
| Allow CLUSTER to be used on a partial index<br />
* http://www.postgresql.org/message-id/CAMkU%3D1zYwoHHsqJ8wfK3GdG_t_a6t4RK-GFDSKymQ0EGP%3DtypA@mail.gmail.com<br />
}} <br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== COPY ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow COPY to report error lines and continue<br />
|This requires the use of a savepoint before each COPY line is processed, with ROLLBACK on COPY failure. <br />
* [http://archives.postgresql.org/pgsql-hackers/2007-12/msg00572.php <nowiki>Re: VLDB Features</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow COPY FROM to create index entries in bulk<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-02/msg00811.php <nowiki>Batch update of indexes on data loading</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve COPY performance<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-02/msg00954.php <nowiki>Re: 8.3 / 8.2.6 restore comparison</nowiki>]<br />
* http://archives.postgresql.org/pgsql-hackers/2010-08/msg01882.php<br />
}}<br />
<br />
{{TodoItem<br />
|Allow COPY to report errors sooner<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-04/msg01169.php <nowiki>Timely reporting of COPY errors</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow COPY to handle other number formats<br />
|E.g. the German notation. Best would be something like WITH DECIMAL ','.<br />
}}<br />
<br />
{{TodoItem<br />
|Allow a stalled COPY to exit if the backend is terminated<br />
* [http://archives.postgresql.org/pgsql-bugs/2009-04/msg00067.php <nowiki>Re: possible bug not in open items</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow COPY "text" format to output a header<br />
* http://www.postgresql.org/message-id/CACfv+pJ31tesLvncJyP24quo8AE+M0GP6p6MEpwPv6yV8%3DsVHQ@mail.gmail.com<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== GRANT/REVOKE ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow SERIAL sequences to inherit permissions from the base table?}}<br />
<br />
{{TodoItem<br />
|Allow dropping of a role that has connection rights<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-05/msg00736.php <nowiki>DROP ROLE dependency tracking ...</nowiki>]<br />
}}<br />
{{TodoEndSubsection}}<br />
<br />
=== DECLARE CURSOR ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Prevent DROP TABLE from dropping a table referenced by its own open cursor?}}<br />
<br />
{{TodoItem<br />
|Provide some guarantees about the behavior of cursors that invoke volatile functions<br />
* [http://archives.postgresql.org/message-id/20997.1244563664@sss.pgh.pa.us Re: Cursor with hold emits the same row more than once across commits in 8.3.7]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== INSERT ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow INSERT/UPDATE of the system-generated oid value for a row}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== SHOW/SET ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Add SET PERFORMANCE_TIPS option to suggest INDEX, VACUUM, VACUUM ANALYZE, and CLUSTER}}<br />
<br />
{{TodoItem<br />
|Rationalize the discrepancy between settings that use values in bytes and SHOW that returns the object count<br />
* [http://archives.postgresql.org/pgsql-docs/2008-07/msg00007.php <nowiki>Re: [ADMIN] shared_buffers and shmmax</nowiki>]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== ANALYZE ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Have EXPLAIN ANALYZE issue NOTICE messages when the estimated and actual row counts differ by a specified percentage}}<br />
<br />
{{TodoItem<br />
|Have EXPLAIN ANALYZE report rows as floating-point numbers<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-05/msg01363.php <nowiki>explain analyze rows=%.0f</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-06/msg00108.php <nowiki>Re: explain analyze rows=%.0f</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve how ANALYZE computes in-doubt tuples<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-11/msg00771.php <nowiki>VACUUM/ANALYZE counting of in-doubt tuples</nowiki>]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== Window Functions ===<br />
See {{messageLink|357.1230492361@sss.pgh.pa.us|TODO items for window functions}}.<br />
{{TodoSubsection}}<br />
{{TodoItem<br />
|Support creation of user-defined window functions<br />
|We have the ability to create new window functions written in C. Is it<br />
worth the effort to create an API that would let them be written in PL/pgsql, etc?}}<br />
<br />
{{TodoItem<br />
|Implement full support for window framing clauses<br />
|In addition to done clauses described in the [http://developer.postgresql.org/pgdocs/postgres/sql-expressions.html#SYNTAX-WINDOW-FUNCTIONS latest doc], these clauses are not implemented yet.<br />
* RANGE BETWEEN ... PRECEDING/FOLLOWING<br />
* EXCLUDE<br />
}}<br />
<br />
{{TodoItem<br />
|Investigate tuplestore performance issues<br />
|The tuplestore_in_memory() thing is just a band-aid, we ought to try to solve it properly. tuplestore_advance seems like a weak spot as well.<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-12/msg00152.php <nowiki>tuplestore potential performance problem</nowiki>]<br />
}}<br />
<br />
{{TodoItem|Do we really need so much duplicated code between Agg and WindowAgg?}}<br />
<br />
{{TodoItem<br />
|Teach planner to evaluate multiple windows in the optimal order<br />
|Currently windows are always evaluated in the query-specified order.<br />
* http://archives.postgresql.org/message-id/3CDAD71E9D70417290FCF66F0178D1E1@amd64<br />
}}<br />
<br />
{{TodoItem<br />
|Implement DISTINCT clause in window aggregates<br />
|Some proprietary RDBMSs have implemented it already, so it helps with porting from those.}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
== Integrity Constraints ==<br />
=== Keys ===<br />
<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Improve deferrable unique constraints for cases with many conflicts<br />
|The current implementation fires a trigger for each potentially conflicting row. This might not scale well for an update that changes many key values at once.<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== Referential Integrity ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Add MATCH PARTIAL referential integrity}}<br />
<br />
{{TodoItem<br />
|Change foreign key constraint for array -&gt; element to mean element in array?<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-10/msg01814.php <nowiki>foreign keys for array/period contains relationships</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Fix problem when cascading referential triggers make changes on cascaded tables, seeing the tables in an intermediate state<br />
* [http://archives.postgresql.org/pgsql-hackers/2005-09/msg00174.php <nowiki>Re: [PATCHES] Work-in-progress referential action trigger timing</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Are ri_KeysEqual checks in the RI enforcement triggers still necessary?<br />
* [http://archives.postgresql.org/pgsql-performance/2005-10/msg00458.php <nowiki>Re: Effects of cascading references in foreign keys</nowiki>]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== Check Constraints ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Run check constraints only when affected columns are changed<br />
* http://archives.postgresql.org/message-id/1326055327.15293.13.camel@vanquo.pezone.net<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
== Server-Side Languages ==<br />
<br />
{{TodoItem<br />
|Add support for polymorphic arguments and return types to languages other than PL/PgSQL}}<br />
<br />
{{TodoItem<br />
|Add support for OUT and INOUT parameters to languages other than PL/PgSQL}}<br />
<br />
{{TodoItem<br />
|Add more fine-grained specification of functions taking arbitrary data types<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-09/msg00367.php <nowiki>RfD: more powerful &quot;any&quot; types</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Implement stored procedures<br />
|This might involve the control of transaction state and the return of multiple result sets<br />
* [http://archives.postgresql.org/pgsql-general/2008-10/msg00454.php <nowiki>PL/pgSQL stored procedure returning multiple result sets (SELECTs)?</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-10/msg01375.php <nowiki>Proposal: real procedures again (8.4)</nowiki>]<br />
* http://archives.postgresql.org/pgsql-hackers/2010-09/msg00542.php<br />
* [http://archives.postgresql.org/pgsql-hackers/2011-04/msg01149.php <nowiki>Gathering specs and discussion on feature (post 9.1)</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow holdable cursors in SPI}}<br />
<br />
=== SQL-Language Functions ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Rethink query plan caching and timing of parse analysis within SQL-language functions<br />
|They should work more like plpgsql functions do ...<br />
* [http://archives.postgresql.org/pgsql-bugs/2011-05/msg00078.php <nowiki>Re: BUG #6019: invalid cached plan on inherited table</nowiki>]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== PL/pgSQL ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow handling of %TYPE arrays, e.g. tab.col%TYPE[]}}<br />
<br />
{{TodoItem<br />
|<nowiki>Allow listing of record column names, and access to record columns via variables, e.g. columns := r.(*), tval2 := r.(colname)</nowiki><br />
* [http://archives.postgresql.org/pgsql-patches/2005-07/msg00458.php <nowiki>Re: PL/PGSQL: Dynamic Record Introspection</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-patches/2006-05/msg00302.php <nowiki>Re: PL/PGSQL: Dynamic Record Introspection</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-patches/2006-06/msg00031.php <nowiki>Re: PL/PGSQL: Dynamic Record Introspection</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow row and record variables to be set to NULL constants, and allow NULL tests on such variables<br />
|Because a row is not scalar, do not allow assignment from NULL-valued scalars.<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-10/msg00070.php <nowiki>NULL and plpgsql rows</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider keeping separate cached copies when search_path changes<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-01/msg01009.php <nowiki>pl/pgsql Plan Invalidation and search_path</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve handling of NULL row values vs. NULL rows<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-09/msg01758.php <nowiki>Null row vs. row of nulls in plpgsql</nowiki>]<br />
* http://archives.postgresql.org/pgsql-hackers/2010-10/msg01973.php<br />
}}<br />
<br />
{{TodoItem<br />
|Improve PERFORM handling of WITH queries or document limitation<br />
* http://archives.postgresql.org/pgsql-bugs/2011-03/msg00309.php<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== PL/Perl ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow regex operations in plperl using UTF8 characters in non-UTF8 encoded databases}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== PL/Python ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Develop a trusted variant of PL/Python.}}<br />
<br />
{{TodoItem<br />
|Create a new restricted execution class that will allow passing function arguments in as locals. Passing them as globals means functions cannot be called recursively.<br />
* [http://archives.postgresql.org/pgsql-hackers/2011-02/msg01468.php <nowiki>Re: pl/python do not delete function arguments</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add a DB-API compliant interface on top of the SPI interface<br />
* http://petereisentraut.blogspot.com/2011/11/plpydbapi-db-api-for-plpython.html<br />
}}<br />
<br />
{{TodoItem<br />
|For functions returning a setof record with a composite type, cache the I/O functions for the composite type<br />
* http://archives.postgresql.org/pgsql-hackers/2010-12/msg02007.php<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== PL/Tcl ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Add table function support}}<br />
<br />
{{TodoItem<br />
|Check encoding validity of values passed back to Postgres in function returns, trigger tuple changes, and SPI calls.}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
== Clients ==<br />
<br />
{{TodoItem<br />
|Add a function like pg_get_indexdef() that report more detailed index information<br />
* [http://archives.postgresql.org/pgsql-bugs/2007-12/msg00166.php <nowiki>BUG #3829: Wrong index reporting from pgAdmin III (v1.8.0 rev 6766-6767)</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Split out pg_resetxlog output into pre- and post-sections<br />
* http://archives.postgresql.org/pgsql-hackers/2010-08/msg02040.php<br />
}}<br />
<br />
=== pg_ctl ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Improve pg_ctl's detection of running postmasters<br />
* http://archives.postgresql.org/pgsql-hackers/2011-06/msg00000.php<br />
* http://archives.postgresql.org/pgsql-committers/2011-06/msg00001.php<br />
}}<br />
<br />
{{TodoItem<br />
|Add additional shutdown modes, and change the default?<br />
* http://archives.postgresql.org/pgsql-hackers/2012-04/msg01283.php<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== psql ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Have psql \ds show all sequences and their settings<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-07/msg00916.php <nowiki>Re: TODO item: Have psql show current values for a sequence</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-12/msg00401.php <nowiki>Quick patch: Display sequence owner</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Move psql backslash database information into the backend, use mnemonic commands?<br />
|This would allow non-psql clients to pull the same information out of the database as psql. <br />
* [http://archives.postgresql.org/pgsql-hackers/2004-01/msg00191.php <nowiki>Re: psql \d option list overloaded</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Make psql's \d commands more consistent in their handling of schemas<br />
* [http://archives.postgresql.org/pgsql-hackers/2004-11/msg00014.php <nowiki>Re: psql and schemas</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Make psql's \d commands distinguish default privileges from no privileges<br />
|ACL displays were visibly different for the two cases before we "improved" them by using array_to_string.<br />
* [http://archives.postgresql.org/pgsql-bugs/2011-05/msg00082.php <nowiki>BUG #6021: There is no difference between default and empty access privileges with \dp</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consistently display privilege information for all objects in psql}}<br />
<br />
{{TodoItemEasy<br />
|\s without arguments (display history) fails with libedit, doesn't use pager either<br />
* [http://archives.postgresql.org/pgsql-bugs/2011-06/msg00114.php <nowiki> psql \s not working - OS X</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add a \set variable to control whether \s displays line numbers<br />
|Another option is to add \# which lists line numbers, and allows command execution.<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-12/msg00255.php <nowiki>Re: psql possible TODO</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Include the symbolic SQLSTATE name in verbose error reports<br />
* [http://archives.postgresql.org/pgsql-general/2007-09/msg00438.php <nowiki>Re: Checking is TSearch2 query is valid</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add prompt escape to display the client and server versions<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-05/msg00310.php <nowiki>WIP patch for TODO Item: Add prompt escape to display the client and server versions</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add option to wrap column values at whitespace boundaries, rather than chopping them at a fixed width.<br />
|Currently, &quot;wrapped&quot; format chops values into fixed widths. Perhaps the word wrapping could use the same algorithm documented in the W3C specification. <br />
* [http://archives.postgresql.org/pgsql-hackers/2008-05/msg00404.php <nowiki>Re: psql wrapped format default for backslash-d commands</nowiki>]<br />
* http://www.w3.org/TR/CSS21/tables.html#auto-table-layout}}<br />
<br />
{{TodoItem<br />
|Support the ReST table output format<br />
|Details about the ReST format: http://docutils.sourceforge.net/rst.html#reference-documentation<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-08/msg01007.php <nowiki>Proposal: new border setting in psql</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-01/msg00518.php <nowiki>Re: Proposal: new border setting in psql</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-01/msg00609.php <nowiki>Re: Proposal: new border setting in psql</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add option to print advice for people familiar with other databases<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-01/msg01845.php <nowiki>MySQL-ism help patch for psql</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add ability to edit views with \ev<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-09/msg00023.php <nowiki>Adding \ev view editor?</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Fix FETCH_COUNT to handle SELECT ... INTO and WITH queries<br />
* http://archives.postgresql.org/pgsql-hackers/2010-05/msg01565.php<br />
* http://archives.postgresql.org/pgsql-bugs/2010-05/msg00192.php<br />
}}<br />
<br />
{{TodoItem<br />
|Prevent psql from sending remaining single-line multi-statement queries after reconnecting<br />
* http://archives.postgresql.org/pgsql-bugs/2010-05/msg00159.php<br />
* http://archives.postgresql.org/pgsql-hackers/2010-05/msg01283.php<br />
}}<br />
<br />
{{TodoItem<br />
|Consider having psql -c read .psqlrc, for consistency<br />
|psql -f already reads .psqlrc<br />
}}<br />
<br />
{{TodoItem<br />
|Allow processing of multiple -f (file) options<br />
* http://www.postgresql.org/message-id/AANLkTikFpzrTRl6392GhatQdwlCWQTXFdSMxh5CP51iv@mail.gmail.com<br />
}}<br />
<br />
{{TodoItem<br />
|Improve line drawing characters<br />
* http://archives.postgresql.org/pgsql-hackers/2011-04/msg00386.php<br />
}}<br />
<br />
{{TodoItem<br />
|Consider improving the continuation prompt<br />
* http://archives.postgresql.org/pgsql-hackers/2011-04/msg01772.php<br />
}}<br />
<br />
{{TodoItem<br />
|Improve speed of tab completion by using LIKE<br />
* http://www.postgresql.org/message-id/20120821174847.GL1267@tamriel.snowman.net<br />
}}<br />
<br />
{{TodoItemEasy<br />
|When <tt>psql -f filename</tt> sees the <tt>PGDMP</tt> marker, abort with an informative error like "this is a PostgreSQL custom-format dump, restore with <tt>pg_restore</tt>"<br />
* http://www.postgresql.org/message-id/53A8E96E.9060507@2ndquadrant.com<br />
* http://www.postgresql.org/message-id/20140918095820.GD17265@alap3.anarazel.de<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== pg_dump / pg_restore ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItemEasy<br />
|<nowiki>Add full object name to the tag field. eg. for operators we need '=(integer, integer)', instead of just '='.</nowiki>}}<br />
<br />
{{TodoItemEasy<br />
|Modify pg_dump to create skeleton views for reload (which are then updated via CREATE OR REPLACE VIEW) when views have circular dependencies. This should eliminate the need for the CREATE RULE "_RETURN" hack currently used to address this issue. Thread and additional information here:<br />
* [http://www.postgresql.org/message-id/25554.1360895028@sss.pgh.pa.us Description of change]<br />
|}}<br />
<br />
{{TodoItem<br />
|Add pg_dumpall custom format dumps?<br />
* [http://archives.postgresql.org/pgsql-general/2010-05/msg00509.php pg_dumpall custom format]<br />
|}}<br />
<br />
{{TodoItem<br />
|Avoid using platform-dependent locale names in pg_dumpall output<br />
|Using native locale names puts roadblocks in the way of porting a dump to another platform. One possible solution is to get<br />
CREATE DATABASE to accept some agreed-on set of locale names and fix them up to meet the platform's requirements.<br />
* http://archives.postgresql.org/message-id/21396.1241716688@sss.pgh.pa.us<br />
}}<br />
<br />
{{TodoItem<br />
|In a selective dump, allow dumping of an object and all its dependencies}}<br />
<br />
{{TodoItem<br />
|Add options like pg_restore -l and -L to pg_dump}}<br />
<br />
{{TodoItem<br />
|Stop dumping CASCADE on DROP TYPE commands in clean mode}}<br />
<br />
{{TodoItem<br />
|Allow pg_restore to load different parts of the COPY data for a single table simultaneously}}<br />
<br />
{{TodoItem<br />
|Remove support for dumping from pre-7.3 servers<br />
|In 7.3 and later, we can get accurate dependency information from the server. pg_dump still contains a lot of crufty code<br />
to try to deal with the lack of dependency info in older servers, but the usefulness of maintaining that code grows small.}}<br />
<br />
{{TodoItem<br />
|Refactor handling of database attributes between pg_dump and pg_dumpall<br />
|Currently only pg_dumpall emits database attributes, such as ALTER DATABASE SET commands and database-level GRANTs.<br />
Many people wish that pg_dump would do that. One proposal is to let pg_dump issue such commands if the -C switch was used,<br />
but it's unclear whether that will satisfy the demand.<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-06/msg01031.php <nowiki>ALTER DATABASE vs pg_dump</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-bugs/2010-05/msg00010.php summary of the issues]<br />
}}<br />
<br />
{{TodoItem<br />
|Change pg_dump so that a comment on the dumped database is applied to the loaded database, even if the database has a different name.<br />
|This will require new backend syntax, perhaps COMMENT ON CURRENT DATABASE. This is related to the previous item.}}<br />
<br />
{{TodoItem<br />
|Allow parallel restore of tar dumps<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-02/msg01154.php <nowiki>Re: parallel restore</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Preserve sparse storage of large objects over dump/restore<br />
* [http://archives.postgresql.org/message-id/18789.1349750451@sss.pgh.pa.us <nowiki>TODO item: teach pg_dump about sparsely-stored large objects</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Prevent PL/pgSQL comment from throwing an error in a non-superuser restore<br />
* [http://www.postgresql.org/message-id/E1VuYH7-0008Rz-SV@wrigleys.postgresql.org Reloading dump fails at COMMENT ON EXTENSION plpgsql]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== ecpg ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Docs<br />
|Document differences between ecpg and the SQL standard and information about the Informix-compatibility module.}}<br />
<br />
{{TodoItem<br />
|Solve cardinality &gt; 1 for input descriptors / variables?}}<br />
<br />
{{TodoItem<br />
|Add a semantic check level, e.g. check if a table really exists}}<br />
<br />
{{TodoItem<br />
|fix handling of DB attributes that are arrays}}<br />
<br />
{{TodoItem<br />
|Fix nested C comments}}<br />
<br />
{{TodoItemEasy<br />
|sqlwarn[6] should be 'W' if the PRECISION or SCALE value specified}}<br />
<br />
{{TodoItem<br />
|Make SET CONNECTION thread-aware, non-standard?}}<br />
<br />
{{TodoItem<br />
|Allow multidimensional arrays}}<br />
<br />
{{TodoItem<br />
|Implement COPY FROM STDIN}} <br />
<br />
{{TodoItem<br />
|Provide a way to specify size of a bytea parameter<br />
* [http://archives.postgresql.org/message-id/200906192131.n5JLVoMo044178@wwwmaster.postgresql.org <nowiki>BUG #4866: ECPG and BYTEA</nowiki>]<br />
}}<br />
<br />
{{TodoItemEasy<br />
|Fix small memory leaks in ecpg<br />
|Memory leaks in a short running application like ecpg are not really a problem, but make debugging more complicated}} <br />
<br />
{{TodoItem<br />
|Allow reuse of cursor name variables<br />
* [http://archives.postgresql.org/message-id/20100329113435.GA3430@feivel.credativ.lan <nowiki>Problems with variable cursorname in ecpg</nowiki>]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== libpq ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Prevent PQfnumber() from lowercasing unquoted column names<br />
|PQfnumber() should never have been doing lowercasing, but historically it has so we need a way to prevent it}}<br />
<br />
{{TodoItem<br />
|Consider disallowing multiple queries in PQexec() as an additional barrier to SQL injection attacks<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-01/msg00184.php <nowiki>Re: InitPostgres and flatfiles question</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add PQexecf() that allows complex parameter substitution<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-03/msg01803.php <nowiki>Last minute mini-proposal (I know, know) for PQexecf()</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add SQLSTATE and severity to errors generated within libpq itself<br />
* [http://archives.postgresql.org/pgsql-interfaces/2007-11/msg00015.php <nowiki>v8.1: Error severity on libpq PGconn*</nowiki>]<br />
* http://archives.postgresql.org/pgsql-hackers/2010-08/msg01425.php<br />
}}<br />
<br />
{{TodoItem<br />
|Add support for interface/ipaddress binding to libpq<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg01811.php <nowiki>SR/libpq - outbound interface/ipaddress binding</nowiki>]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== HTTP===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow access to the database via HTTP<br />
|See [[HTTP_API]]}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
== Triggers ==<br />
<br />
{{TodoItem<br />
|Improve storage of deferred trigger queue<br />
|Right now all deferred trigger information is stored in backend memory. This could exhaust memory for very large trigger queues. This item involves dumping large queues into files, or doing some kind of join to process all the triggers, some bulk operation, or a bitmap. <br />
* [http://archives.postgresql.org/pgsql-hackers/2008-05/msg00876.php <nowiki>Re: BUG #4204: COPY to table with FK has memory leak</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-10/msg00464.php <nowiki>Scaling up deferred unique checks and the after trigger queue</nowiki>]<br />
* http://archives.postgresql.org/pgsql-hackers/2011-08/msg00023.php<br />
}}<br />
<br />
{{TodoItem<br />
|Allow triggers to be disabled in only the current session.<br />
|This is currently possible by starting a multi-statement transaction, modifying the system tables, performing the desired SQL, restoring the system tables, and committing the transaction. ALTER TABLE ... TRIGGER requires a table lock so it is not ideal for this usage.}}<br />
<br />
{{TodoItem<br />
|With disabled triggers, allow pg_dump to use ALTER TABLE ADD FOREIGN KEY<br />
|If the dump is known to be valid, allow foreign keys to be added without revalidating the data.}}<br />
<br />
{{TodoItem<br />
|Allow statement-level triggers to access modified rows}}<br />
<br />
{{TodoItem<br />
|When statement-level triggers are defined on a parent table, have them fire only on the parent table, and fire child table triggers only where appropriate<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-11/msg01883.php <nowiki>Statement-level triggers and inheritance</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Tighten trigger permission checks<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-12/msg00564.php <nowiki>Security leak with trigger functions?</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow BEFORE INSERT triggers on views<br />
* [http://archives.postgresql.org/pgsql-general/2007-02/msg01466.php <nowiki>Re: Why can't I put a BEFORE EACH ROW trigger on a view?</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add database and transaction-level triggers<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-03/msg00451.php <nowiki>Proposal for db level triggers</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-05/msg00620.php <nowiki>triggers on prepare, commit, rollback... ?</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Reduce locking requirements for creating a trigger<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-06/msg00635.php <nowiki>Re: Change lock requirements for adding a trigger</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Avoid requirement for "AFTER" trigger functions to return a value<br />
* http://archives.postgresql.org/pgsql-hackers/2011-02/msg02384.php<br />
}}<br />
<br />
{{TodoItem<br />
|Allow creation of inline triggers<br />
* http://archives.postgresql.org/pgsql-hackers/2012-02/msg00708.php<br />
}}<br />
<br />
== Inheritance ==<br />
<br />
{{TodoItem<br />
|Allow inherited tables to inherit indexes, UNIQUE constraints, and primary/foreign keys<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-05/msg00285.php <nowiki>Partitioning/inherited tables vs FKs</nowiki>]<br />
* http://archives.postgresql.org/pgsql-hackers/2010-12/msg00039.php<br />
* http://archives.postgresql.org/pgsql-hackers/2010-12/msg00305.php<br />
}}<br />
<br />
{{TodoItem<br />
|Honor UNIQUE INDEX on base column in INSERTs/UPDATEs on inherited table, e.g. INSERT INTO inherit_table (unique_index_col) VALUES (dup) should fail<br />
|The main difficulty with this item is the problem of creating an index that can span multiple tables.}}<br />
<br />
{{TodoItem<br />
|Determine whether ALTER TABLE / SET SCHEMA should work on inheritance hierarchies (and thus support ONLY). If yes, implement it.}}<br />
<br />
{{TodoItem<br />
|ALTER TABLE variants sometimes support recursion and sometimes not, but this is poorly/not documented, and the ONLY marker would then be silently ignored. Clarify the documentation, and reject ONLY if it is not supported.}}<br />
<br />
== Indexes ==<br />
<br />
{{TodoItem<br />
|Prevent index uniqueness checks when UPDATE does not modify the column<br />
|Uniqueness (index) checks are done when updating a column even if the column is not modified by the UPDATE.<br />
However, HOT already short-circuits this in common cases, so more work might not be helpful.<br />
* http://www.postgresql.org/message-id/CA+TgmoZOyaTanfEvNUdiHBCuu9Zh0JVP1e_UTVbx6Rvj9vFC9Q@mail.gmail.com<br />
}}<br />
<br />
{{TodoItem<br />
|Allow the creation of on-disk bitmap indexes which can be quickly combined with other bitmap indexes<br />
|Such indexes could be more compact if there are only a few distinct values. Such indexes can also be compressed. Keeping such indexes updated can be costly.<br />
* [http://archives.postgresql.org/pgsql-patches/2005-07/msg00512.php <nowiki>Re: Bitmap index AM</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-12/msg01107.php <nowiki>Bitmap index thoughts</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-03/msg00265.php <nowiki>Stream bitmaps</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-03/msg01214.php <nowiki>Re: Bitmapscan changes - Requesting further feedback</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-patches/2007-05/msg00013.php <nowiki>Updated bitmap index patch</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-07/msg00741.php <nowiki>Reviewing new index types (was Re: [PATCHES] Updated bitmap indexpatch)</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-10/msg01023.php <nowiki>Bitmap Indexes: request for feedback</nowiki>]<br />
* http://archives.postgresql.org/message-id/800923.27831.qm@web29010.mail.ird.yahoo.com <br />
}}<br />
<br />
{{TodoItem<br />
|Allow accurate statistics to be collected on indexes with more than one column or expression indexes, perhaps using per-index statistics<br />
* [http://archives.postgresql.org/pgsql-performance/2006-10/msg00222.php <nowiki>Re: Simple join optimized badly?</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-03/msg01131.php <nowiki>Stats for multi-column indexes</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-10/msg00741.php <nowiki>Cross-column statistics revisited</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-06/msg01431.php <nowiki>Multi-Dimensional Histograms</nowiki>]<br />
* http://archives.postgresql.org/pgsql-hackers/2010-12/msg00913.php<br />
* http://archives.postgresql.org/pgsql-hackers/2010-12/msg02179.php <br />
* http://archives.postgresql.org/pgsql-hackers/2011-01/msg00459.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-02/msg02054.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-04/msg01731.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-03/msg00894.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-09/msg00679.php<br />
}}<br />
<br />
{{TodoItem<br />
|Consider having a larger statistics target for indexed columns and expression indexes. <br />
}}<br />
<br />
{{TodoItem<br />
|Consider smaller indexes that record a range of values per heap page, rather than having one index entry for every heap row<br />
|This is useful if the heap is clustered by the indexed values. <br />
* [http://archives.postgresql.org/pgsql-hackers/2006-12/msg00341.php <nowiki>Grouped Index Tuples</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-02/msg01264.php <nowiki>Grouped Index Tuples</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-03/msg00465.php <nowiki>Grouped Index Tuples / Clustered Indexes</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-patches/2007-03/msg00163.php <nowiki>Bitmapscan changes</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-08/msg00014.php <nowiki>Re: GIT patch</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-08/msg00487.php <nowiki>Re: Index Tuple Compression Approach?</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-04/msg01589.php <nowiki>Re: Index AM change proposals, redux</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add REINDEX CONCURRENTLY, like CREATE INDEX CONCURRENTLY<br />
|This is difficult because you must upgrade to an exclusive table lock to replace the existing index file. CREATE INDEX CONCURRENTLY does not have this complication. This would allow index compaction without downtime. <br />
* [http://archives.postgresql.org/pgsql-performance/2007-08/msg00289.php <nowiki>Re: When/if to Reindex</nowiki>]<br />
* http://archives.postgresql.org/pgsql-hackers/2012-09/msg00911.php<br />
* http://archives.postgresql.org/pgsql-hackers/2012-10/msg00128.php<br />
* [http://www.postgresql.org/message-id/CAB7nPqTys6JUQDxUczbJb0BNW0kPrW8WdZuk11KaxQq6o98PJg@mail.gmail.com Support for REINDEX CONCURRENTLY]<br />
* [https://wiki.postgresql.org/wiki/Reindex_concurrently Wiki page listing current situation on the matter]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow multiple indexes to be created concurrently, ideally via a single heap scan<br />
|pg_restore allows parallel index builds, but it is done via subprocesses, and there is no SQL interface for this.<br />
Cluster could definitely benefit from this.<br />
* http://archives.postgresql.org/pgsql-performance/2011-04/msg00093.php<br />
* http://www.postgresql.org/message-id/CADVWZZJ5AS%3DXVrDwfTQqQP_V1+_fTYcZhq%3Dd5CbCXoALCjObbg@mail.gmail.com<br />
}}<br />
<br />
{{TodoItem<br />
|Consider sorting entries before inserting into btree index<br />
* [http://archives.postgresql.org/pgsql-general/2008-01/msg01010.php <nowiki>Re: ATTN: Clodaldo was Performance problem. Could it be related to 8.3-beta4?</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow creation of an index that can do comparisons to test if a value is between two column values<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-05/msg00757.php <nowiki>Proposal: temporal extension &quot;period&quot; data type</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider using "effective_io_concurrency" for index scans<br />
|Currently only bitmap scans use this, which might be fine because most multi-row index scans use bitmap scans.<br />
* [http://www.postgresql.org/message-id/CAGTBQpZzf70n0PYJ%3DVQLd+jb3wJGo%3D2TXmY+SkJD6G_vjC5QNg@mail.gmail.com Prefetch index pages for B-Tree index scans]<br />
}}<br />
<br />
{{TodoItem<br />
|Fix problem with btree page splits during checkpoints<br />
* http://archives.postgresql.org/pgsql-hackers/2010-11/msg00052.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-09/msg00184.php<br />
}}<br />
<br />
{{TodoItem<br />
|[http://archives.postgresql.org/pgsql-hackers/2012-05/msg00669.php Support amgettuple() in GIN (useful for exclusion constraints)]<br />
}}<br />
<br />
{{TodoItem<br />
| Allow "loose" or "skip" scans on btree indexes in which the first column has low cardinality<br />
* http://archives.postgresql.org/pgsql-performance/2012-08/msg00159.php<br />
}}<br />
<br />
{{TodoItem<br />
| Make the planner's "special index operator" mechanism extensible<br />
* http://www.postgresql.org/message-id/27270.1364700924@sss.pgh.pa.us<br />
}}<br />
<br />
{{TodoItem<br />
| Allow index only count for indexes which doesn't support index only scan<br />
}}<br />
<br />
{{TodoItem<br />
|Improve GIN performance<br />
* [http://www.postgresql.org/message-id/52F373CC.4050800@vmware.com Small GIN optimizations (after 9.4)]<br />
}}<br />
<br />
{{TodoItem<br />
| Teach GIN cost estimation about "fast scans"<br />
* http://www.postgresql.org/message-id/53208B4D.5000806@vmware.com<br />
}}<br />
<br />
=== GIST ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Add more GIST index support for geometric data types}}<br />
<br />
{{TodoItem<br />
|Allow GIST indexes to create certain complex index types, like digital trees (see Aoki)}}<br />
<br />
{{TodoItem<br />
|Fix performance issues in contrib/seg and contrib/cube GiST support<br />
* [http://archives.postgresql.org/message-id/alpine.DEB.2.00.0904161633160.4053@aragorn.flymine.org GiST index performance]<br />
* [http://archives.postgresql.org/message-id/alpine.DEB.2.00.0904221704470.22330@aragorn.flymine.org draft patch]<br />
* [http://archives.postgresql.org/pgsql-performance/2009-05/msg00069.php <nowiki>Re: GiST index performance</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-performance/2009-06/msg00068.php <nowiki>GiST index performance</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|[http://archives.postgresql.org/message-id/4DC8D284-05CF-4E3D-9670-AC9A32C37A36@justatheory.com GiST index support for arrays]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow index only scan for GIST indexes (when possible)}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== Hash ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Add UNIQUE capability to hash indexes}}<br />
<br />
{{TodoItem<br />
|Add hash WAL logging for crash recovery<br />
* http://archives.postgresql.org/pgsql-performance/2011-09/msg00196.php<br />
* [http://www.postgresql.org/message-id/CA+TgmoZyMoJSrFxHXQ06G8jhjXQcsKvDiHB_8z_7nc7hj7iHYQ@mail.gmail.com Save Hash Indexes]<br />
* [http://www.postgresql.org/message-id/CAM3SWZRBpAz%3DbZYCxvQDSGKR5OA5yEhGVOCit7AyStUtq2cBDA@mail.gmail.com GSoC on WAL-logging hash indexes]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow multi-column hash indexes}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
== Sorting ==<br />
<br />
{{TodoItem<br />
|Consider whether duplicate keys should be sorted by block/offset<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-03/msg00558.php <nowiki>Remove hacks for old bad qsort() implementations?</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider being smarter about memory and external files used during sorts<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-11/msg01101.php <nowiki>Sorting Improvements for 8.4</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-12/msg00045.php <nowiki>Re: Sorting Improvements for 8.4</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider detoasting keys before sorting}}<br />
<br />
{{TodoItem<br />
|Allow sorts of skinny tuples to use even more available memory.<br />
* Now that it is not limited by MaxAllocSize, don't limit by INT_MAX either.<br />
* http://www.postgresql.org/message-id/CA+U5nMKkRMin1pV8VMpS6_n7hcOWSG0kZS3oFL9JOa8DV6vJyQ@mail.gmail.com<br />
}}<br />
<br />
== Fsync ==<br />
<br />
{{TodoItem<br />
|Consider sorting writes during checkpoint<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-06/msg00541.php <nowiki>Sorted writes in checkpoint</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-patches/2008-07/msg00050.php <nowiki>Re: Sorting writes during checkpoint</nowiki>]<br />
* http://archives.postgresql.org/pgsql-hackers/2010-10/msg02012.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-02/msg00278.php<br />
* http://archives.postgresql.org/pgsql-hackers/2012-01/msg00493.php<br />
}}<br />
<br />
== Cache Usage ==<br />
<br />
{{TodoItem<br />
|Provide a way to calculate an &quot;estimated COUNT(*)&quot;<br />
|Perhaps by using the optimizer's cardinality estimates or random sampling.<br />
* [http://archives.postgresql.org/pgsql-hackers/2005-11/msg00943.php <nowiki>Re: Improving count(*)</nowiki>]<br />
* http://wiki.postgresql.org/wiki/Slow_Counting<br />
}}<br />
<br />
{{TodoItem<br />
|Consider automatic caching of statements at various levels:<br />
* Parsed query tree<br />
* Query execute plan<br />
* Query results <br />
<br />
:<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-04/msg00823.php <nowiki>Cached Query Plans (was: global prepared statements)</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider increasing internal areas (NUM_CLOG_BUFFERS) when shared buffers is increased<br />
* [http://archives.postgresql.org/pgsql-hackers/2005-10/msg01419.php <nowiki>Re: slru.c race condition (was Re: TRAP: FailedAssertion(&quot;!((itemid)-&gt;lp_flags &amp; 0x01)&quot;,)</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-08/msg00030.php <nowiki>clog_buffers to 64 in 8.3?</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-performance/2007-08/msg00024.php <nowiki>CLOG Patch</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider decreasing the amount of memory used by PrivateRefCount<br />
|<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-11/msg00797.php <nowiki>PrivateRefCount (for 8.3)</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-01/msg00752.php <nowiki>Re: PrivateRefCount (for 8.3)</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider allowing higher priority queries to have referenced buffer cache pages stay in memory longer<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-11/msg00562.php <nowiki>Re: How to keep a table in memory?</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve cache lookup speed for sessions accessing many relations<br />
* http://archives.postgresql.org/pgsql-hackers/2012-11/msg00356.php<br />
}}<br />
<br />
{{TodoItem<br />
|Fix memory leak caused by negative catcache entries<br />
* [http://www.postgresql.org/message-id/51C0A1FF.2050404@vmware.com <nowiki>Re: Memory leak in PL/pgSQL function which CREATE/SELECT/DROP a temporary table</nowiki>]<br />
}}<br />
<br />
== Vacuum ==<br />
<br />
{{TodoItem<br />
|Auto-fill the free space map by scanning the buffer cache or by checking pages written by the background writer<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-02/msg01125.php <nowiki>Dead Space Map</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-03/msg00011.php <nowiki>Re: Automatic free space map filling</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow concurrent inserts to use recently created pages rather than creating new ones<br />
* http://archives.postgresql.org/pgsql-hackers/2010-05/msg00853.php<br />
}}<br />
<br />
{{TodoItem<br />
|Consider having single-page pruning update the visibility map<br />
* <nowiki>https://commitfest.postgresql.org/action/patch_view?id=75</nowiki><br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg02344.php <nowiki>Re: visibility maps and heap_prune</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow VACUUM FULL and CLUSTER to update the visibility map<br />
* [http://www.postgresql.org/message-id/20130112191404.255800@gmx.com index-only scans : abnormal heap fetches after VACUUM FULL]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve tracking of total relation tuple counts now that vacuum doesn't always scan the whole heap<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-06/msg00531.php Partial vacuum versus pg_class.reltuples]<br />
}}<br />
<br />
{{TodoItem<br />
|Bias FSM towards returning free space near the beginning of the heap file, in hopes that empty pages at the end can be truncated by VACUUM<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-09/msg01124.php <nowiki>FSM search modes</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider a more compact data representation for dead tuple locations within VACUUM<br />
* [http://archives.postgresql.org/pgsql-patches/2007-05/msg00143.php <nowiki>Re: Have vacuum emit a warning when it runs out of maintenance_work_mem</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Provide more information in order to improve user-side estimates of dead space bloat in relations<br />
* [http://archives.postgresql.org/pgsql-general/2009-05/msg01039.php <nowiki>Re: Bloated Table</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve locking behaviour of vacuum during trailing page truncation<br />
* http://archives.postgresql.org/pgsql-bugs/2011-03/msg00319.php<br />
* http://archives.postgresql.org/message-id/4D8DF88E.7080205@Yahoo.com<br />
}}<br />
<br />
{{TodoItem<br />
|Reduce the number of table scans performed by vacuum<br />
* http://archives.postgresql.org/pgsql-hackers/2011-05/msg01119.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-06/msg00605.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-07/msg00624.php<br />
}}<br />
<br />
{{TodoItem<br />
|Vacuum Gin indexes in physically order rather than logical order<br />
* http://archives.postgresql.org/pgsql-hackers/2012-04/msg00443.php<br />
}}<br />
<br />
{{TodoItem<br />
|Avoid creation of the free space map for small tables<br />
* http://archives.postgresql.org/pgsql-hackers/2011-11/msg01751.php<br />
* http://archives.postgresql.org/pgsql-hackers/2012-08/msg00552.php<br />
* http://archives.postgresql.org/pgsql-hackers/2012-08/msg00615.php<br />
}}<br />
<br />
=== Auto-vacuum ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Issue log message to suggest VACUUM FULL if a table is nearly empty?<br />
*[http://www.postgresql.org/message-id/F40B0968DB0A904DA78A924E633BE78645FAAF@SYDEXCHTMP2.au.fjanz.com discussion]<br />
}}<br />
<br />
{{TodoItem<br />
|Prevent long-lived temporary tables from causing frozen-xid advancement starvation<br />
|The problem is that autovacuum cannot vacuum them to set frozen xids; only the session that created them can do that. <br />
* [http://archives.postgresql.org/pgsql-general/2007-06/msg01645.php <nowiki>Re: AutoVacuum Behaviour Question</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Prevent autovacuum from running if an old transaction is still running from the last vacuum<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-11/msg00899.php <nowiki>Re: Autovacuum and OldestXmin</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Have autoanalyze of parent tables occur when child tables are modified<br />
* http://archives.postgresql.org/pgsql-performance/2010-06/msg00137.php<br />
* http://archives.postgresql.org/pgsql-performance/2010-10/msg00271.php<br />
}}<br />
<br />
{{TodoItem<br />
|Allow visibility map all-visible bits to be set even when an auto-ANALYZE is running<br />
* http://archives.postgresql.org/pgsql-hackers/2012-01/msg00356.php<br />
}}<br />
<br />
{{TodoItem<br />
|Allow parallel cores to be used by vacuumdb<br />
* [http://archives.postgresql.org/message-id/4F10A728.7090403@agliodbs.com vacuumdb -j]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve autovacuum tuning<br />
* http://www.postgresql.org/message-id/5078AD6B.8060802@agliodbs.com<br />
* http://www.postgresql.org/message-id/20130124215715.GE4528@alvh.no-ip.org<br />
}}<br />
<br />
{{TodoItem<br />
|Improve setting of visibility map bits for read-only and insert-only workloads<br />
* http://www.postgresql.org/message-id/20130906001437.GA29264@momjian.us<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
== Locking ==<br />
<br />
{{TodoItem<br />
|Fix priority ordering of read and write light-weight locks<br />
* [http://archives.postgresql.org/pgsql-hackers/2004-11/msg00893.php <nowiki>lwlocks and starvation</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2004-11/msg00905.php <nowiki>Re: lwlocks and starvation</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Fix problem when multiple subtransactions of the same outer transaction hold different types of locks, and one subtransaction aborts<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-11/msg01011.php <nowiki>FOR SHARE vs FOR UPDATE locks</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-12/msg00001.php <nowiki>Re: FOR SHARE vs FOR UPDATE locks</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-02/msg00435.php <nowiki>Re: [PATCHES] [pgsql-patches] Phantom Command IDs, updated patch</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-05/msg00773.php <nowiki>Re: savepoints and upgrading locks</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add idle_in_transaction_timeout GUC so locks are not held for long periods of time}}<br />
<br />
{{TodoItem<br />
|Improve deadlock detection when a page cleaning lock conflicts with a shared buffer that is pinned<br />
* [http://archives.postgresql.org/pgsql-bugs/2008-01/msg00138.php <nowiki>BUG #3883: Autovacuum deadlock with truncate?</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-01/msg00873.php <nowiki>Thoughts about bug #3883</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-committers/2008-01/msg00365.php <nowiki>Re: pgsql: Add checks to TRUNCATE, CLUSTER, and REINDEX to prevent</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Detect deadlocks involving LockBufferForCleanup()<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-01/msg00873.php <nowiki>Thoughts about bug #3883</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow finer control over who is cancelled in a deadlock<br />
* http://archives.postgresql.org/pgsql-hackers/2011-03/msg01727.php<br />
}}<br />
<br />
== Startup Time Improvements ==<br />
<br />
{{TodoItem<br />
|Experiment with multi-threaded backend for backend creation<br />
|This would prevent the overhead associated with process creation. Most operating systems have trivial process creation time compared to database startup overhead, but a few operating systems (Win32, Solaris) might benefit from threading. Also explore the idea of a single session using multiple threads to execute a statement faster.}}<br />
<br />
{{TodoItem<br />
|Allow backends to change their database without restart<br />
|This allows for faster server startup.<br />
* http://archives.postgresql.org/pgsql-hackers/2010-11/msg00843.php<br />
* http://archives.postgresql.org/pgsql-hackers/2010-12/msg00336.php<br />
}}<br />
<br />
== Write-Ahead Log ==<br />
<br />
{{TodoItem<br />
|Eliminate need to write full pages to WAL before page modification<br />
|Currently, to protect against partial disk page writes, we write full page images to WAL before they are modified so we can correct any partial page writes during recovery. These pages can also be eliminated from point-in-time archive files. <br />
* [http://archives.postgresql.org/pgsql-hackers/2002-06/msg00655.php <nowiki>Re: Index Scans become Seq Scans after VACUUM ANALYSE</nowiki>]<br />
* http://archives.postgresql.org/pgsql-hackers/2011-05/msg01191.php<br />
* [http://archives.postgresql.org/message-id/20120105061916.GB21048@fetter.org WIP double writes]<br />
* [http://archives.postgresql.org/message-id/4EFC449F02000025000441CD@gw.wicourts.gov double writes]<br />
* [http://archives.postgresql.org/message-id/20120110214344.GB21106@fetter.org Double-write with Fast Checksums]<br />
* [http://archives.postgresql.org/message-id/1962493974.656458.1327703514780.JavaMail.root@zimbra-prod-mbox-4.vmware.com double writes using "double-write buffer" approach]<br />
* http://archives.postgresql.org/pgsql-hackers/2012-10/msg01463.php<br />
}}<br />
<br />
{{TodoItem<br />
|When full page writes are off, write CRC to WAL and check file system blocks on recovery<br />
|If CRC check fails during recovery, remember the page in case a later CRC for that page properly matches. The difficulty is that hint bits are not WAL logged, meaning a valid page might not match the earlier CRC.}}<br />
<br />
{{TodoItem<br />
|Write full pages during file system write and not when the page is modified in the buffer cache<br />
|This allows most full page writes to happen in the background writer. It might cause problems for applying WAL on recovery into a partially-written page, but later the full page will be replaced from WAL.<br />
* [http://archives.postgresql.org/message-id/CAGvK12UST-tPhyLrSLuSpwFxZbAO79yYrhV2xaLmS2MkUxNUVQ@mail.gmail.com Page Checksums + Double Writes]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider compression of full page writes<br />
* [http://www.postgresql.org/message-id/CAHGQGwGqG8e9YN0fNCUZqTTT%3DhNr7Ly516kfT5ffqf4pp1qnHg@mail.gmail.com Compression of full-page-writes]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow WAL information to recover corrupted pg_controldata<br />
* [http://archives.postgresql.org/pgsql-patches/2006-06/msg00025.php <nowiki>Re: [HACKERS] pg_resetxlog -r flag</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Find a way to reduce rotational delay when repeatedly writing last WAL page<br />
|Currently fsync of WAL requires the disk platter to perform a full rotation to fsync again. One idea is to write the WAL to different offsets that might reduce the rotational delay. <br />
* [http://archives.postgresql.org/pgsql-hackers/2002-11/msg00483.php <nowiki>500 tpsQL + WAL log implementation</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Speed WAL recovery by allowing more than one page to be prefetched<br />
|This should be done utilizing the same infrastructure used for prefetching in general to avoid introducing complex error-prone code in WAL replay. <br />
* [http://archives.postgresql.org/pgsql-general/2007-12/msg00683.php <nowiki>Slow PITR restore</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-12/msg00497.php <nowiki>Re: [GENERAL] Slow PITR restore</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-02/msg01279.php <nowiki>Read-ahead and parallelism in redo recovery</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve WAL concurrency by increasing lock granularity<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-02/msg00556.php <nowiki>Reworking WAL locking</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Be more aggressive about creating WAL files<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-10/msg01325.php <nowiki>Re: PANIC caused by open_sync on Linux</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2004-07/msg01075.php <nowiki>PreallocXlogFiles</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2005-04/msg00556.php <nowiki>WAL/PITR additional items</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Have resource managers report the duration of their status changes<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-10/msg01468.php <nowiki>Recovery of Multi-stage WAL actions</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Close deleted WAL files held open in *nix by long-lived read-only backends<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-11/msg01754.php <nowiki>Deleted WAL files held open by backends in Linux</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-12/msg00060.php <nowiki>Re: Deleted WAL files held open by backends in Linux</nowiki>]<br />
}}<br />
<br />
== Optimizer / Executor ==<br />
<br />
{{TodoItem<br />
|Improve selectivity functions for geometric operators}}<br />
<br />
{{TodoItem<br />
|Consider increasing the default values of from_collapse_limit, join_collapse_limit, and/or geqo_threshold<br />
* [http://archives.postgresql.org/message-id/4136ffa0905210551u22eeb31bn5655dbe7c9a3aed5@mail.gmail.com from_collapse_limit vs. geqo_threshold]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve ability to display optimizer analysis using OPTIMIZER_DEBUG<br />
* http://archives.postgresql.org/pgsql-hackers/2012-08/msg00597.php<br />
}}<br />
<br />
{{TodoItem<br />
|Log statements where the optimizer row estimates were dramatically different from the number of rows actually found?}}<br />
<br />
{{TodoItem<br />
|Consider compressed annealing to search for query plans<br />
|This might replace GEQO.<br />
* http://archives.postgresql.org/message-id/15658.1241278636%40sss.pgh.pa.us<br />
}}<br />
<br />
{{TodoItem<br />
|Improve use of expression indexes for ORDER BY <br />
* [http://archives.postgresql.org/pgsql-hackers/2009-08/msg01553.php <nowiki>Resjunk sort columns, Heikki's index-only quals patch, and bug #5000</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Modify the planner to better estimate caching effects<br />
* http://archives.postgresql.org/pgsql-performance/2010-11/msg00117.php<br />
}}<br />
<br />
{{TodoItem<br />
|Allow shared buffer cache contents to affect index cost computations<br />
* http://archives.postgresql.org/pgsql-hackers/2011-06/msg01140.php<br />
}}<br />
<br />
{{TodoItem<br />
|Allow the CTE (Common Table Expression) optimization fence to be optionally disabled<br />
* http://archives.postgresql.org/pgsql-hackers/2012-09/msg00700.php<br />
* http://archives.postgresql.org/pgsql-performance/2012-11/msg00161.php<br />
}}<br />
<br />
{{TodoItem<br />
|Teach the planner how to better use partial indexes for index-only scans<br />
* http://www.postgresql.org/message-id/25141.1345072858@sss.pgh.pa.us<br />
* http://www.postgresql.org/message-id/79C7D74D-59B0-4D97-A5E5-55553EF299AA@justatheory.com<br />
}}<br />
<br />
=== Hashing ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Consider using a hash for joining to a large IN (VALUES ...) list<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-05/msg00450.php <nowiki>Planning large IN lists</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow single batch hash joins to preserve outer pathkeys<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-09/msg00806.php Re: Potential Join Performance Issue]<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-04/msg00153.php a few crazy ideas about hash joins]<br />
}}<br />
<br />
{{TodoItem<br />
|"lazy" hash tables - look up only the tuples that are actually requested<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-04/msg00153.php a few crazy ideas about hash joins]<br />
}}<br />
<br />
{{TodoItem<br />
|Avoid building the same hash table more than once during the same query<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-04/msg00153.php a few crazy ideas about hash joins]<br />
}}<br />
<br />
{{TodoItem<br />
|Avoid hashing for distinct and then re-hashing for hash join<br />
* [http://archives.postgresql.org/message-id/4136ffa0902191346g62081081v8607f0b92c206f0a@mail.gmail.com Re: Fixing Grittner's planner issues]<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-04/msg00153.php a few crazy ideas about hash joins]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
== Background Writer ==<br />
<br />
{{TodoItem<br />
|Consider having the background writer update the transaction status hint bits before writing out the page<br />
|Implementing this requires the background writer to have access to system catalogs and the transaction status log.<br />
* [http://www.postgresql.org/message-id/CAMkU%3D1zf1Yo0dYJzJ-pk9o4mwLuMD4Uzw6Jck7u1nC_Xb2gYWA@mail.gmail.com Re: Autovacuum fails to keep visibility map up-to-date in mostly-insert-only-tables]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider adding buffers the background writer finds reusable to the free list <br />
* [http://archives.postgresql.org/pgsql-hackers/2007-04/msg00781.php <nowiki>Background LRU Writer/free list</nowiki>]<br />
* [http://archives.postgresql.org/message-id/CA+U5nMKtvyDcV4zTr7bq7t6cA2nBfLxCJ8tQgVBnc5ddRPO+Bg@mail.gmail.com our buffer replacement strategy is kind of lame]<br />
* [http://www.postgresql.org/message-id/CAOeZVic4HikhmzVD%3DZP4JY9g8PgpyiQQOXOELWP%3DkR+%3DH1Frgg@mail.gmail.com Page replacement algorithm in buffer cache]<br />
* [http://www.postgresql.org/message-id/002f01ce50a8$e057c7a0$a10756e0$@kapila@huawei.com Move unused buffers to freelist]<br />
}}<br />
<br />
{{TodoItem<br />
|Automatically tune bgwriter_delay based on activity rather then using a fixed interval<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-04/msg00781.php <nowiki>Background LRU Writer/free list</nowiki>]<br />
* [http://archives.postgresql.org/message-id/CA+U5nMKtvyDcV4zTr7bq7t6cA2nBfLxCJ8tQgVBnc5ddRPO+Bg@mail.gmail.com our buffer replacement strategy is kind of lame]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider whether increasing BM_MAX_USAGE_COUNT improves performance<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-06/msg01007.php <nowiki>Bgwriter LRU cleaning: we've been going at this all wrong</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Test to see if calling PreallocXlogFiles() from the background writer will help with WAL segment creation latency<br />
* [http://archives.postgresql.org/pgsql-patches/2007-06/msg00340.php <nowiki>Re: Load Distributed Checkpoints, final patch</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add auto-tuning of work_mem<br />
* [http://www.postgresql.org/message-id/20131009143046.GT22450@momjian.us Auto-tuning work_mem and maintenance_work_mem]<br />
}}<br />
<br />
== Concurrent Use of Resources ==<br />
<br />
{{TodoItem<br />
|Do async I/O for faster random read-ahead of data<br />
|Async I/O allows multiple I/O requests to be sent to the disk with results coming back asynchronously.<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-10/msg00820.php <nowiki>Asynchronous I/O Support</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-performance/2007-09/msg00255.php <nowiki>Re: random_page_costs - are defaults of 4.0 realistic for SCSI RAID 1</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-12/msg00027.php <nowiki>There's random access and then there's random access</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-patches/2008-01/msg00170.php <nowiki>Bitmap index scan preread using posix_fadvise (Was: There's random access and then there's random access)</nowiki>]<br />
The above patch is already applied as of 8.4, but it still remains to figure out how to handle plain indexscans effectively.<br />
* [http://archives.postgresql.org//pgsql-hackers/2009-01/msg00806.php Problems with the patch submitted for posix_fadvise in index scans]<br />
}}<br />
<br />
{{TodoItem<br />
|Experiment with multi-threaded backend for better I/O utilization<br />
|This would allow a single query to make use of multiple I/O channels simultaneously. One idea is to create a background reader that can pre-fetch sequential and index scan pages needed by other backends. This could be expanded to allow concurrent reads from multiple devices in a partitioned table.<br />
* http://archives.postgresql.org/pgsql-performance/2011-02/msg00123.php<br />
* http://archives.postgresql.org/pgsql-hackers/2012-10/msg01139.php<br />
}}<br />
<br />
{{TodoItem<br />
|Experiment with multi-threaded backend for better CPU utilization<br />
|This would allow several CPUs to be used for a single query, such as for sorting or query execution.<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-10/msg00945.php <nowiki>Multi CPU Queries - Feedback and/or suggestions wanted!</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|SMP scalability improvements<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-07/msg00439.php <nowiki>Straightforward changes for increased SMP scalability</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-09/msg00206.php <nowiki>Re: Reducing Transaction Start/End Contention</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-03/msg00361.php <nowiki>Re: Reducing Transaction Start/End Contention</nowiki>]<br />
}}<br />
<br />
== TOAST ==<br />
<br />
{{TodoItem<br />
|Allow user configuration of TOAST thresholds<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-02/msg00213.php <nowiki>Re: Proposed adjustments in MaxTupleSize and toastthresholds</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-08/msg00082.php <nowiki>pg_lzcompress strategy parameters</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Reduce unnecessary cases of deTOASTing<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-09/msg00895.php <nowiki>Re: [PATCHES] Eliminate more detoast copies for packed varlenas</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Reduce costs of repeat de-TOASTing of values<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-06/msg01096.php <nowiki>WIP patch: reducing overhead for repeat de-TOASTing</nowiki>]<br />
}}<br />
<br />
== Monitoring ==<br />
{{TodoItem<br />
|Expand pg_stat_activity for easier integration with monitoring tools<br />
|* http://archives.postgresql.org/message-id/4DFA13A5.2060200@2ndQuadrant.com<br />
}}<br />
<br />
{{TodoItem<br />
|Add column to pg_stat_activity that shows the progress of long-running commands like CREATE INDEX and VACUUM<br />
* [http://archives.postgresql.org/pgsql-patches/2008-04/msg00203.php <nowiki>EXPLAIN progress info</nowiki>]<br />
* The CLUSTER/VACUUM FULL implementation would also be useful to track this way<br />
}}<br />
<br />
{{TodoItem<br />
|Have pg_stat_activity display query strings in the correct client encoding<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-01/msg00131.php <nowiki>pg_stats queries versus per-database encodings</nowiki>]<br />
}}<br />
<br />
{{TodoItemEasy<br />
|Expose pg_controldata via an SQL interface<br />
|Helpful for monitoring replicated databases<br />
* http://archives.postgresql.org/message-id/4B901D73.8030003@agliodbs.com<br />
* [http://archives.postgresql.org/message-id/4B959D7A.6010907@joeconway.com initial patch]<br />
}}<br />
<br />
{{TodoItem<br />
| Add entry creation timestamp column to pg_stat_replication<br />
* http://archives.postgresql.org/pgsql-hackers/2011-08/msg00694.php<br />
}}<br />
<br />
{{TodoItem<br />
| Allow reporting of stalls due to wal_buffer wrap-around<br />
* http://archives.postgresql.org/pgsql-hackers/2012-02/msg00826.php<br />
}}<br />
<br />
{{TodoItem<br />
| Restructure pg_stat_database columns tup_returned and tup_fetched to return meaningful values<br />
* http://www.postgresql.org/message-id/20121012060345.GA29214@toroid.org<br />
}}<br />
<br />
== Miscellaneous Performance ==<br />
<br />
{{TodoItem<br />
|Use mmap() rather than shared memory for shared buffers?<br />
|This would remove the requirement for SYSV SHM but would introduce portability issues. Anonymous mmap (or mmap to /dev/zero) is required to prevent I/O overhead. We could also consider mmap() for writing WAL.<br />
* http://archives.postgresql.org/pgsql-hackers/2010-11/msg00750.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-04/msg00756.php<br />
* http://www.postgresql.org/message-id/20140115114909.GI4963@suse.de<br />
}}<br />
<br />
{{TodoItem<br />
|Rather than consider mmap()-ing in 8k pages, consider mmap()'ing entire files into a backend?<br />
|Doing I/O to large tables would consume a lot of address space or require frequent mapping/unmapping. Extending the file also causes mapping problems that might require mapping only individual pages, leading to thousands of mappings. Another problem is that there is no way to _prevent_ I/O to disk from the dirty shared buffers so changes could hit disk before WAL is written.<br />
* http://archives.postgresql.org/pgsql-hackers/2011-03/msg01239.php<br />
}}<br />
<br />
{{TodoItem<br />
|Consider ways of storing rows more compactly on disk:<br />
* Reduce the row header size?<br />
* Consider reducing on-disk varlena length from four bytes to two because a heap row cannot be more than 64k in length}}<br />
<br />
{{TodoItem<br />
|Consider transaction start/end performance improvements<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-07/msg00948.php <nowiki>Reducing Transaction Start/End Contention</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-03/msg00361.php <nowiki>Re: Reducing Transaction Start/End Contention</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow configuration of backend priorities via the operating system<br />
|Though backend priorities make priority inversion during lock waits possible, research shows that this is not a huge problem.<br />
* [http://archives.postgresql.org/pgsql-general/2007-02/msg00493.php <nowiki>Priorities for users or queries?</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider increasing the minimum allowed number of shared buffers<br />
* [http://archives.postgresql.org/pgsql-bugs/2008-02/msg00157.php <nowiki>Re: [PATCH] Don't bail with legitimate -N/-B options</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider if CommandCounterIncrement() can avoid its AcceptInvalidationMessages() call<br />
* [http://archives.postgresql.org/pgsql-committers/2007-11/msg00585.php <nowiki>pgsql: Avoid incrementing the CommandCounter when</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider Cartesian joins when both relations are needed to form an indexscan qualification for a third relation<br />
* [http://archives.postgresql.org/pgsql-performance/2007-12/msg00090.php <nowiki>Re: TB-sized databases</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider not storing a NULL bitmap on disk if all the NULLs are trailing<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-12/msg00624.php <nowiki>Proposal for Null Bitmap Optimization(for Trailing NULLs)</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-patches/2007-12/msg00109.php <nowiki>Re: [HACKERS] Proposal for Null Bitmap Optimization(for TrailingNULLs)</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Sort large UPDATE/DELETEs so it is done in heap order<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-01/msg01119.php <nowiki>Possible future performance improvement: sort updates/deletes by ctid</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider decreasing the I/O caused by updating tuple hint bits<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-05/msg00847.php <nowiki>Hint Bits and Write I/O</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-patches/2008-07/msg00199.php <nowiki>Re: [HACKERS] Hint Bits and Write I/O</nowiki>]<br />
* http://archives.postgresql.org/pgsql-hackers/2010-10/msg00695.php<br />
* http://archives.postgresql.org/pgsql-hackers/2010-11/msg00792.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-01/msg01063.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-03/msg01408.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-03/msg01453.php<br />
}}<br />
<br />
{{TodoItem<br />
|Avoid the requirement of freezing pages that are infrequently modified <br />
|If all rows on a page are visible, it is possible to set a bit in the visibility map (once the visibility map is 100% reliable) and not need to freeze the page, avoiding a page rewrite<br />
* http://archives.postgresql.org/message-id/4BF701CF.2090205@agliodbs.com<br />
* http://archives.postgresql.org/pgsql-hackers/2010-06/msg00082.php<br />
* http://www.postgresql.org/message-id/20130523175148.GA29374@alap2.anarazel.de<br />
* http://www.postgresql.org/message-id/CA+TgmoaEmnoLZmVbb8gvY69NA8zw9BWpiZ9+TLz-LnaBOZi7JA@mail.gmail.com<br />
* http://www.postgresql.org/message-id/51A7553E.5070601@vmware.com<br />
}}<br />
<br />
{{TodoItem<br />
|Avoid reading in b-tree pages when replaying vacuum records in hot standby mode<br />
* [http://archives.postgresql.org/message-id/1272571938.4161.14739.camel@ebony <nowiki>Hot Standby tuning for btree_xlog_vacuum()</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Restructure truncation logic to be more resistant to failure<br />
|This also involves not writing dirty buffers for a truncated or dropped relation<br />
* http://archives.postgresql.org/pgsql-hackers/2010-08/msg01032.php<br />
}}<br />
<br />
{{TodoItem<br />
|Consider adding logic to increase large tables by more than 8k<br />
|This would reduce file system fragmentation<br />
* http://archives.postgresql.org/pgsql-bugs/2011-03/msg00337.php<br />
}}<br />
<br />
== Miscellaneous Other ==<br />
<br />
{{TodoItem<br />
|Deal with encoding issues for filenames in the server filesystem<br />
* {{MessageLink|20090413184335.39BE.52131E4D@oss.ntt.co.jp|a proposed patch here}}<br />
* {{MessageLink|8484.1244655656@sss.pgh.pa.us|some issues about it here}}<br />
* {{MessageLink|20100107103740.97A5.52131E4D@oss.ntt.co.jp|Windows-specific patch here}}<br />
}}<br />
<br />
{{TodoItem<br />
|Deal with encoding issues in the output of localeconv()<br />
* [http://archives.postgresql.org/message-id/40c6d9160904210658y590377cfw6dbbecb53d2b8be0@mail.gmail.com bug report]<br />
* [http://archives.postgresql.org/message-id/49EF8DA0.90008@tpf.co.jp draft patch]<br />
* [http://archives.postgresql.org/message-id/21710.1243620986@sss.pgh.pa.us review of patch]<br />
}}<br />
<br />
{{TodoItem<br />
|Provide schema name and other fields available from SQL GET DIAGNOSTICS in error reports<br />
* [http://archives.postgresql.org/message-id/dcc563d10810211907n3c59a920ia9eb7cd2a6d5ea58@mail.gmail.com <nowiki>How to get schema name which violates fk constraint</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-11/msg00846.php <nowiki>patch - Report the schema along table name in a referential failure error message</nowiki>]<br />
* {{MessageLink|3191.1263306359@sss.pgh.pa.us|Re: NOT NULL violation and error-message}}<br />
* [http://archives.postgresql.org/pgsql-hackers/2009-08/msg00213.php <nowiki>the case for machine-readable error fields</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add 64-bit support to /contrib/pgbench<br />
* http://archives.postgresql.org/pgsql-hackers/2010-07/msg00153.php<br />
* http://archives.postgresql.org/pgsql-hackers/2011-02/msg00705.php<br />
}}<br />
<br />
{{TodoItem<br />
|Use sa_mask to close race conditions between signal handlers<br />
* http://www.postgresql.org/message-id/20130911013107.GA225735@tornado.leadboat.com<br />
}}<br />
<br />
== Source Code ==<br />
<br />
{{TodoItemEasy<br />
|Remove warnings created by -Wcast-align}}<br />
<br />
{{TodoItem<br />
|Move platform-specific ps status display info from ps_status.c to ports}}<br />
<br />
{{TodoItem<br />
|Consider a faster CRC32 algorithm<br />
* http://archives.postgresql.org/pgsql-hackers/2010-05/msg01112.php<br />
}}<br />
<br />
{{TodoItem<br />
|Allow cross-compiling by generating the zic database on the target system}}<br />
<br />
{{TodoItem<br />
|Improve NLS maintenance of libpgport messages linked onto applications}}<br />
<br />
{{TodoItem<br />
|Use UTF8 encoding for NLS messages so all server encodings can read them properly}}<br />
<br />
{{TodoItem<br />
|Allow creation of universal binaries for Darwin<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-07/msg00884.php <nowiki>Getting to universal binaries for Darwin</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider GnuTLS if OpenSSL license becomes a problem<br />
* http://archives.postgresql.org/pgsql-hackers/2011-02/msg00892.php<br />
* [http://archives.postgresql.org/pgsql-patches/2006-05/msg00040.php <nowiki>[PATCH] Add support for GnuTLS</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-12/msg01213.php <nowiki>TODO: GNU TLS</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider making NAMEDATALEN more configurable in future releases}}<br />
<br />
{{TodoItem<br />
|Research use of signals and sleep wake ups<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-07/msg00003.php <nowiki>Restartable signals 'n all that</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow C++ code to more easily access backend code<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-12/msg00302.php <nowiki>Mostly Harmless: Welcoming our C++ friends</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider simplifying how memory context resets handle child contexts<br />
* [http://archives.postgresql.org/pgsql-patches/2007-08/msg00067.php <nowiki>Re: Memory leak in nodeAgg</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Create three versions of libpgport to simplify client code<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-10/msg00154.php <nowiki>8.4 TODO item: make src/port support libpq and ecpg directly</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve detection of shared memory segments being used by others by checking the SysV shared memory field 'nattch'<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-01/msg00656.php <nowiki>postgresql in FreeBSD jails: proposal</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-01/msg00673.php <nowiki>Re: postgresql in FreeBSD jails: proposal</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Implement the non-threaded Avahi service discovery protocol<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-02/msg00939.php <nowiki>Re: [PATCHES] Avahi support for Postgresql</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-patches/2008-02/msg00097.php <nowiki>Re: Avahi support for Postgresql</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-03/msg01211.php <nowiki>Re: [PATCHES] Avahi support for Postgresql</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-patches/2008-04/msg00001.php <nowiki>Re: [HACKERS] Avahi support for Postgresql</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Reduce data row alignment requirements on some 64-bit systems<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-10/msg00369.php <nowiki>[WIP] Reduce alignment requirements on 64-bit systems.</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Restructure TOAST internal storage format for greater flexibility<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-11/msg00049.php <nowiki>Re: PG_PAGE_LAYOUT_VERSION 5 - time for change</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
| Add regression tests for pg_dump/restore<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-02/msg01967.php <nowiki>"make install-check-pg_dump" target in src/regress]</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
| Research different memory allocation methods for lists<br />
* http://archives.postgresql.org/pgsql-hackers/2011-04/msg01467.php <br />
}}<br />
<br />
{{TodoItem<br />
| Consider removing the attribute options cache<br />
* http://archives.postgresql.org/pgsql-hackers/2011-03/msg00039.php<br />
}}<br />
<br />
{{TodoItem<br />
| Restructure /contrib section<br />
* http://archives.postgresql.org/pgsql-hackers/2011-06/msg00705.php<br />
}}<br />
<br />
{{TodoItem<br />
| Consider adding explicit huge page support<br />
* http://archives.postgresql.org/pgsql-hackers/2012-07/msg00123.php<br />
}}<br />
<br />
=== /contrib/pg_upgrade ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Handle large object comments<br />
|This is difficult to do because the large object doesn't exist when --schema-only is loaded.<br />
}}<br />
<br />
{{TodoItem<br />
|Consider using pg_depend for checking object usage in version.c<br />
}}<br />
<br />
{{TodoItem<br />
|If reindex is necessary, allow it to be done in parallel with pg_dump custom format<br />
}}<br />
<br />
{{TodoItem<br />
|Migrate pg_statistic by dumping it out as a flat file, so analyze is not necessary<br />
|pg_class.oid is not preserved so schema.tablename must be used.<br />
* [http://archives.postgresql.org/message-id/CAAZKuFaWdLkK8eozSAooZBets9y_mfo2HS6urPAKXEPbd-JLCA@mail.gmail.com pg_upgrade and statistics]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve testing, perhaps using the buildfarm<br />
|The buildfarm has access to multiple versions of PostgreSQL.<br />
}}<br />
<br />
{{TodoItem<br />
|Create machine-readable output of pg_controldata<br />
|This would avoid parsing its output. The problem is we need pg_controldata output from both the old and new clusters so we would need to support both formats.<br />
}}<br />
<br />
{{TodoItem<br />
|Find cleaner way to start/stop dedicated servers for upgrades<br />
* http://archives.postgresql.org/pgsql-hackers/2012-08/msg00275.php<br />
}}<br />
<br />
{{TodoItem<br />
|Consider a way to run pg_upgrade on standby servers<br />
* http://archives.postgresql.org/pgsql-hackers/2012-07/msg00453.php<br />
* http://archives.postgresql.org/pgsql-hackers/2012-09/msg00056.php<br />
}}<br />
<br />
{{TodoItem<br />
|Desired changes that would prevent upgrades with pg_upgrade<br />
* 32-bit page checksums<br />
* Add metapage to GiST indexes<br />
* Clean up hstore's internal representation<br />
* Remove tuple infomask bit HEAP_MOVED_OFF and HEAP_MOVED_IN<br />
* [http://www.postgresql.org/message-id/CAK+WP1xdmyswEehMuetNztM4H199Z1w9KWRHVMKzyyFM+hV%3DzA@mail.gmail.com fix char() index trailing space handling]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== Windows ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Remove configure.in check for link failure when cause is found}}<br />
<br />
{{TodoItem<br />
|Remove readdir() errno patch when runtime/mingwex/dirent.c rev 1.4 is released}}<br />
<br />
{{TodoItem<br />
|Allow psql to use readline once non-US code pages work with backslashes}}<br />
<br />
{{TodoItem<br />
|Fix problem with shared memory on the Win32 Terminal Server}}<br />
<br />
{{TodoItem<br />
|Improve signal handling<br />
* [http://archives.postgresql.org/pgsql-patches/2005-06/msg00027.php <nowiki>Simplify Win32 Signaling code</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Convert MSVC build system to remove most batch files<br />
* [http://archives.postgresql.org/pgsql-hackers/2007-08/msg00961.php <nowiki>MSVC build system</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Support pgxs when using MSVC}}<br />
<br />
{{TodoItem<br />
|Fix MSVC NLS support, like for to_char()<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-02/msg00485.php <nowiki>NLS on MSVC strikes back!</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-patches/2008-02/msg00038.php <nowiki>Fix for 8.3 MSVC locale (Was [HACKERS] NLS on MSVC strikes back!)</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Find a correct rint() substitute on Windows<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-01/msg00808.php <nowiki>Minor bug in src/port/rint.c</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Fix global namespace issues when using multiple terminal server sessions<br />
* [http://archives.postgresql.org/message-id/48F3BFCC.8030107@dunslane.net problems with Windows global namespace]}}<br />
<br />
{{TodoItem<br />
|Change from the current autoconf/gmake build system to cmake<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-12/msg01869.php <nowiki>About CMake (was Re: [COMMITTERS] pgsql: Append major version number and for libraries soname major)</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve consistency of path separator usage<br />
* http://archives.postgresql.org/message-id/49C0BDC5.4010002@hagander.net<br />
}}<br />
<br />
{{TodoItem<br />
|Fix cross-compiling on Windows<br />
* http://archives.postgresql.org/pgsql-bugs/2010-10/msg00110.php<br />
}}<br />
<br />
{{TodoItem<br />
|Reduce file statistics overhead on directory reads<br />
* http://www.postgresql.org/message-id/1338325561.82125.YahooMailNeo@web39304.mail.mud.yahoo.com<br />
}}<br />
<br />
{{TodoItem<br />
|Fix hang with long file paths<br />
* [http://www.postgresql.org/message-id/CAA4eK1JxaBofxpcgLqCx9EB%3Dm3PaXr9iFU9%3DV3ddDswsPZooxw@mail.gmail.com Long paths for tablespace leads to uninterruptible hang in Windows]<br />
}}<br />
<br />
{{TodoEndSubsection}}<br />
<br />
=== Wire Protocol Changes ===<br />
{{TodoSubsection}}<br />
<br />
{{TodoItem<br />
|Allow dynamic character set handling}}<br />
<br />
{{TodoItem<br />
|Ensure the client can determine the encoding of messages sent early in the handshake<br />
* http://www.postgresql.org/message-id/541A5659.5050006@2ndquadrant.com}}<br />
<br />
{{TodoItem<br />
|Let the client indicate character encoding of database names, user names, passwords, and of pre-auth error messages returned by the server<br />
* http://www.postgresql.org/message-id/16160.1360540050@sss.pgh.pa.us}}<br />
* http://www.postgresql.org/message-id/20131220030725.GA1411150@tornado.leadboat.com<br />
<br />
{{TodoItem<br />
|Add decoded type, length, precision}}<br />
<br />
{{TodoItem<br />
|Mark result columns as known-not-null when possible<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-11/msg01029.php <nowiki>Adding nullable indicator to Describe</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Provide more control over planner treatment of statements being prepared}}<br />
<br />
{{TodoItem<br />
|Use compression<br />
|If SSL is used, hopefully avoid the overhead of key negotiation and encryption<br />
* http://archives.postgresql.org/pgsql-hackers/2012-06/msg00793.php<br />
}}<br />
<br />
{{TodoItem<br />
|Update clients to use data types, typmod, schema.table.column names of result sets using new statement protocol}}<br />
<br />
{{TodoItem<br />
|Set protocol for wire format negotiation<br />
* [http://archives.postgresql.org/message-id/CACMqXCKkGrGXxQhjHCKCe0B8hn6sTt-1sdgHZOSGQMxrusOsQA@mail.gmail.com GUC_REPORT for protocol tunables]<br />
}}<br />
<br />
{{TodoItem<br />
|Make sure upgrading to a 4.1 protocol version will actually work smoothly<br />
* [http://archives.postgresql.org/message-id/28307.1318255008@sss.pgh.pa.us Re: libpq, PQdescribePrepared -> PQftype, PQfmod, no PQnullable]<br />
}}<br />
<br />
{{TodoItem<br />
|Allow multi-state authentication (e.g. try client peer, fall back to md5)<br />
* http://www.postgresql.org/message-id/51A44185.5060306@2ndquadrant.com<br />
}}<br />
<br />
{{TodoItem<br />
|Identify the affected object in CommandComplete message?<br />
* http://www.postgresql.org/message-id/CAAfz9KNGVoyM+z_2tnPKTDXG_RdR9a33Y5s+zQ9LdwTTsqqZng@mail.gmail.com<br />
}}<br />
<br />
{{TodoItem<br />
|Allow negotiation of encryption, <tt>STARTTLS</tt> style, rather than forcing client to decide on SSL or !SSL before connecting<br />
* http://www.postgresql.org/message-id/5406EAD3.7070002@2ndquadrant.com}}<br />
<br />
{{TodoItem<br />
|Permit lazy fetches of large values, at least out-of-line TOASTED values<br />
* http://www.postgresql.org/message-id/53FF0EF8.100@2ndquadrant.com<br />
}}<br />
{{TodoEndSubsection}}<br />
<br />
== Documentation ==<br />
<br />
{{TodoItemEasy <br />
| Add contrib functions to the index<br />
* Add the functions and GUCs in the contrib modules to [http://www.postgresql.org/docs/current/static/sql-createindex.html the documentation index]: [http://archives.postgresql.org/message-id/50A2E173.6030404@2ndQuadrant.com per list discussion]<br />
}}<br />
<br />
{{TodoItem<br />
|Convert single quotes to apostrophes in the PDF documentation<br />
* [http://archives.postgresql.org/pgsql-docs/2007-12/msg00059.php <nowiki>SGML docs and pdf single-quotes</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Provide a manpage for postgresql.conf<br />
* {{messageLink|20080819194311.GH4428@alvh.no-ip.org|A smaller default postgresql.conf}}<br />
* {{messageLink|200808211910.37524.peter_e@gmx.net|A smaller default postgresql.conf}}<br />
}}<br />
<br />
{{TodoItem<br />
|Change the manpage-generating toolchain to use the new XML-based docbook2x tools<br />
* {{messageLink|200808211910.37524.peter_e@gmx.net|A smaller default postgresql.conf}}<br />
}}<br />
<br />
{{TodoItem<br />
|Consider changing documentation format from SGML to XML<br />
* [http://archives.postgresql.org/pgsql-docs/2006-12/msg00152.php <nowiki>Re: Authoring Tools WAS: Switching to XML</nowiki>]<br />
* http://archives.postgresql.org/pgsql-docs/2011-04/msg00020.php<br />
* http://wiki.postgresql.org/wiki/Switching_PostgreSQL_documentation_from_SGML_to_XML<br />
}}<br />
<br />
{{TodoItem<br />
|Document support for N<nowiki>' '</nowiki> national character string literals, if it matches the SQL standard<br />
* http://archives.postgresql.org/message-id/1275895438.1849.1.camel@fsopti579.F-Secure.com<br />
}}<br />
<br />
{{TodoItem<br />
|Add diagrams to the documentation<br />
* http://archives.postgresql.org/pgsql-docs/2010-07/msg00001.php<br />
}}<br />
<br />
== Exotic Features ==<br />
<br />
{{TodoItem<br />
|Add pre-parsing phase that converts non-ISO syntax to supported syntax<br />
|This could allow SQL written for other databases to run without modification.}}<br />
<br />
{{TodoItem<br />
|Allow plug-in modules to emulate features from other databases}}<br />
<br />
{{TodoItem<br />
|Add features of Oracle-style packages<br />
|A package would be a schema with session-local variables, public/private functions, and initialization functions. It is also possible to implement these capabilities in any schema and not use a separate &quot;packages&quot; syntax at all.<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-08/msg00384.php <nowiki>proposal for PL packages for 8.3.</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Consider allowing control of upper/lower case folding of unquoted identifiers<br />
* [http://archives.postgresql.org/pgsql-hackers/2004-04/msg00818.php <nowiki>Bringing PostgreSQL torwards the standard regarding case folding</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2006-10/msg01527.php <nowiki>Re: [SQL] Case Preservation disregarding case sensitivity?</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-03/msg00849.php <nowiki>TODO Item: Consider allowing control of upper/lower case folding of unquoted, identifiers</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-07/msg00415.php <nowiki>Identifier case folding notes</nowiki>]<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-07/msg00415.php <nowiki>Identifier case folding notes</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Add autonomous transactions<br />
* [http://archives.postgresql.org/pgsql-hackers/2008-01/msg00893.php <nowiki>autonomous transactions</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Give query progress indication<br />
* [[Query progress indication]]<br />
}}<br />
<br />
{{TodoItem<br />
|Rethink our type system<br />
* [[Rethinking datatypes]]<br />
}}<br />
<br />
{{TodoItem<br />
|Improve push-down of joins, aggregates, and sorts to foreign data wrappers<br />
* [http://www.postgresql.org/message-id/20131121150515.GC23976@momjian.us Status of FDW pushdowns]<br />
}}<br />
<br />
== Features We Do ''Not'' Want ==<br />
<br />
The following features have been discussed ad nauseum on the PostgreSQL mailing lists and the consensus has been that the project is not interested in them. As such, if you are going to bring them up as potential features, you will want to be familiar with all of the arguments against these features which have been previously made over the years. If you decide to work on such features anyway, you should be aware that you face a higher-than-normal barrier to get the Project to accept them.<br />
<br />
{{TodoItem<br />
|All backends running as threads in a single process (not wanted)<br />
|This eliminates the process protection we get from the current setup. Thread creation is usually the same overhead as process creation on modern systems, so it seems unwise to use a pure threaded model, and MySQL and DB2 have demonstrated that threads introduce as many issues as they solve. Threading specific operations such as I/O, seq scans, and connection management has been discussed and will probably be implemented to enable specific performance features. Moving to a threaded engine would also require halting all other work on PostgreSQL for one to two years.}}<br />
<br />
{{TodoItem<br />
|"Oracle-style" optimizer hints (not wanted)<br />
|Optimizer hints, as implemented in Oracle and other RDBMSes, are used to work around problems in the optimizer and introduce upgrade and maintenance issues. We would rather have such problems reported and fixed. We have discussed a more sophisticated system of per-class cost adjustment instead, but a specification remains to be developed. See [[OptimizerHintsDiscussion|Optimizer Hints Discussion]] for further information.}}<br />
<br />
{{TodoItem<br />
|Embedded server (not wanted)<br />
|While PostgreSQL clients runs fine in limited-resource environments, the server requires multiple processes and a stable pool of resources to run reliably and efficiently. Stripping down the PostgreSQL server to run in the same process address space as the client application would add too much complexity and failure cases. Besides, there are several very mature embedded SQL databases already available.}}<br />
<br />
{{TodoItem<br />
|Obfuscated function source code (not wanted)<br />
|Obfuscating function source code has minimal protective benefits because anyone with super-user access can find a way to view the code. At the same time, it would greatly complicate backups and other administrative tasks. To prevent non-super-users from viewing function source code, remove SELECT permission on pg_proc.<br />
* [http://archives.postgresql.org/pgsql-general/2008-09/msg00668.php <nowiki>Obfuscated stored procedures (was Re: Oracle and Postgresql)</nowiki>]<br />
}}<br />
<br />
{{TodoItem<br />
|Indeterminate behavior for the GROUP BY clause (not wanted)<br />
|At least one other database product allows specification of a subset of the result columns which GROUP BY would need to be able to provide predictable results; the server is free to return any value from the group. This is not viewed as a desirable feature. PostgreSQL 9.1 allows result columns that are not referenced by GROUP BY if a primary key for the same table is referenced in GROUP BY.<br />
* [http://archives.postgresql.org/pgsql-hackers/2010-03/msg00297.php <nowiki>Re: SQL compatibility reminder: MySQL vs PostgreSQL</nowiki>]<br />
}}<br />
<br />
</div><br />
<br />
[[Category:Todo]]</div>Jakobhttps://wiki.postgresql.org/index.php?title=Todo:ICU&diff=23799Todo:ICU2014-11-27T09:55:17Z<p>Jakob: /* Status */ added further links to the hackers list</p>
<hr />
<div>== Collation using ICU ==<br />
<br />
Currently PostgreSQL relies on the underlying operating system to provide collation support. This means that each platform has a slightly different way of doing collation. Some like the BSDs do not support UTF-8 collation. Some like glibc have fairly complete collation support.<br />
<br />
ICU is described at http://www.icu-project.org/<br />
<br />
It's available under what appears to be [http://bugs.icu-project.org/trac/browser/icu/trunk/license.html a BSD-compatible license].<br />
<br />
== References ==<br />
<br />
[http://www.postgresql.org/message-id/F8268DB6-B50F-429F-8289-DA8FFA5F22BA@tripadvisor.com Discussion about using ICU to prevent index corruption]<br />
<br />
[http://www.postgresql.org/message-id/18C8A481-33A6-4483-8C24-B8CE70DB7F27@eggerapps.at Discussion about integrating Palle Girgensohn's ICU patch]<br />
<br />
== Status ==<br />
<br />
An patch for ICU support has existed for several years in FreeBSD ports [http://people.freebsd.org/~girgen/postgresql-icu/readme.html]. It only covers a small part of what is necessary.<br />
<br />
A [http://www.postgresql.org/message-id/72AE2E04-CD4E-4E7A-9303-49DE5354B4B3@eggerapps.at todo list for integrating Palle's patch] has been posted to the hackers mailing list.<br />
<br />
PostgreSQL Plus Advanced Server already has support for ICU. EnterpriseDB [http://www.postgresql.org/message-id/CA+OCxozt5BjdggE9-QnYxCQBROATXQV6ytWES8XPdG77f=5kbw@mail.gmail.com might decide to contribute those changes back].<br />
<br />
The SQL syntax and parser/catalog support is a separate item, see [[Todo:Collate]].<br />
<br />
== Overview of changes required ==<br />
<br />
Basically, the collation support provided by ICU needs to be done either instead of the current system support, or in addition to. Given that client programs will probably be using the system collation, at the very least it should be an option.<br />
<br />
ICU supports a very flexible scheme for collation. In addition to just providing standard collations for many languages, it also allows users to customise collations and create their own. This does create the question about how to represent the collation to the server.<br />
<br />
The native format of ICU is UTF-16 (not to be confused with UCS-2 which doesn't support all of Unicode). Now, PostgreSQL doesn't support this encoding at all (for various reasons) and we do want to avoid the overhead of converting every string to UTF-16 before comparison.<br />
<br />
Fortunatly ICU provides an alternative, iterators [http://icu-project.org/userguide/characterIterator.html]. An iterator is configured on a string which returns one character at a time. What will need to happen for non-Unicode encodings is that they will have an iterator that converts the characters one at a time for the collation. PostgreSQL already contains all the necessary tables to do this.<br />
<br />
For large scale sorting ICU recommends doing a conversion from the strings to sort-keys which can be compared with just memcmp(). This is the same machanism as in POSIX with strxfrm(). However, currently PostgreSQL has no way to store these sort-keys.<br />
<br />
== Discussion ==<br />
<br />
This topic has been discussed on and off for many years, most recently [http://momjian.postgresql.org/mhonarc/message-id/1182357417.823760.201350@c77g2000hse.googlegroups.com.html] (see attached JS-Kit discussion). The objections appear to be:<br />
# ICU is a large library<br />
# ICU prefers to use Unicode internally, though it does not require strings to be stored in Unicode<br />
# It won't match the results returned by sort on the command-line<br />
The pros are:<br />
# ICU is cross-platform, it supports at least the platforms postgresql does. [http://www.icu-project.org/repos/icu/icu/trunk/readme.html#HowToBuildSupported]<br />
# ICU is generally faster than the system collation support (glibc [http://www.icu-project.org/charts/collation_icu4c_glibc.html])<br />
# ICU is more flexible, allowing users to create custom collators<br />
# Sorting will match Java sorting<br />
<br />
No research has been done on the effect of collation for non-UTF-8 locales. In general any encoding will require some iterator for collation, only UTF-8 has a builtin iterator.<br />
<br />
It should be noted that this is not a blocker for [[Todo:Collate|SQL COLLATE]] support. Using just setlocale() and strcoll_l (supported on Windows, GLibc and MacOSX) we can get excellent performance on all the commonly used platforms. However, this does leave BSD/MacOSX users requiring Unicode collation out in the cold. (MacOSX has support for unicode collation internally [http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFStrings/introCFStrings.html#//apple_ref/doc/uid/10000131], but does not support it in any encoding other than UTF-16. Hence it isn't available in the C library).<br />
<br />
[[Category:Todo detail|ICU]]</div>Jakobhttps://wiki.postgresql.org/index.php?title=Todo:ICU&diff=23798Todo:ICU2014-11-27T09:48:21Z<p>Jakob: /* References */ Added links to recent discussions on the hackers mailing list</p>
<hr />
<div>== Collation using ICU ==<br />
<br />
Currently PostgreSQL relies on the underlying operating system to provide collation support. This means that each platform has a slightly different way of doing collation. Some like the BSDs do not support UTF-8 collation. Some like glibc have fairly complete collation support.<br />
<br />
ICU is described at http://www.icu-project.org/<br />
<br />
It's available under what appears to be [http://bugs.icu-project.org/trac/browser/icu/trunk/license.html a BSD-compatible license].<br />
<br />
== References ==<br />
<br />
[http://www.postgresql.org/message-id/F8268DB6-B50F-429F-8289-DA8FFA5F22BA@tripadvisor.com Discussion about using ICU to prevent index corruption]<br />
<br />
[http://www.postgresql.org/message-id/18C8A481-33A6-4483-8C24-B8CE70DB7F27@eggerapps.at Discussion about integrating Palle Girgensohn's ICU patch]<br />
<br />
== Status ==<br />
<br />
An patch for ICU support has existed for several years in FreeBSD ports [http://people.freebsd.org/~girgen/postgresql-icu/readme.html]. It only covers a small part of what is necessary.<br />
<br />
The SQL syntax and parser/catalog support is a separate item, see [[Todo:Collate]].<br />
<br />
== Overview of changes required ==<br />
<br />
Basically, the collation support provided by ICU needs to be done either instead of the current system support, or in addition to. Given that client programs will probably be using the system collation, at the very least it should be an option.<br />
<br />
ICU supports a very flexible scheme for collation. In addition to just providing standard collations for many languages, it also allows users to customise collations and create their own. This does create the question about how to represent the collation to the server.<br />
<br />
The native format of ICU is UTF-16 (not to be confused with UCS-2 which doesn't support all of Unicode). Now, PostgreSQL doesn't support this encoding at all (for various reasons) and we do want to avoid the overhead of converting every string to UTF-16 before comparison.<br />
<br />
Fortunatly ICU provides an alternative, iterators [http://icu-project.org/userguide/characterIterator.html]. An iterator is configured on a string which returns one character at a time. What will need to happen for non-Unicode encodings is that they will have an iterator that converts the characters one at a time for the collation. PostgreSQL already contains all the necessary tables to do this.<br />
<br />
For large scale sorting ICU recommends doing a conversion from the strings to sort-keys which can be compared with just memcmp(). This is the same machanism as in POSIX with strxfrm(). However, currently PostgreSQL has no way to store these sort-keys.<br />
<br />
== Discussion ==<br />
<br />
This topic has been discussed on and off for many years, most recently [http://momjian.postgresql.org/mhonarc/message-id/1182357417.823760.201350@c77g2000hse.googlegroups.com.html] (see attached JS-Kit discussion). The objections appear to be:<br />
# ICU is a large library<br />
# ICU prefers to use Unicode internally, though it does not require strings to be stored in Unicode<br />
# It won't match the results returned by sort on the command-line<br />
The pros are:<br />
# ICU is cross-platform, it supports at least the platforms postgresql does. [http://www.icu-project.org/repos/icu/icu/trunk/readme.html#HowToBuildSupported]<br />
# ICU is generally faster than the system collation support (glibc [http://www.icu-project.org/charts/collation_icu4c_glibc.html])<br />
# ICU is more flexible, allowing users to create custom collators<br />
# Sorting will match Java sorting<br />
<br />
No research has been done on the effect of collation for non-UTF-8 locales. In general any encoding will require some iterator for collation, only UTF-8 has a builtin iterator.<br />
<br />
It should be noted that this is not a blocker for [[Todo:Collate|SQL COLLATE]] support. Using just setlocale() and strcoll_l (supported on Windows, GLibc and MacOSX) we can get excellent performance on all the commonly used platforms. However, this does leave BSD/MacOSX users requiring Unicode collation out in the cold. (MacOSX has support for unicode collation internally [http://developer.apple.com/documentation/CoreFoundation/Conceptual/CFStrings/introCFStrings.html#//apple_ref/doc/uid/10000131], but does not support it in any encoding other than UTF-16. Hence it isn't available in the C library).<br />
<br />
[[Category:Todo detail|ICU]]</div>Jakobhttps://wiki.postgresql.org/index.php?title=Community_Guide_to_PostgreSQL_GUI_Tools&diff=21832Community Guide to PostgreSQL GUI Tools2014-02-13T07:20:39Z<p>Jakob: /* PG Commander */ updated text to reflect it is no longer in beta, added information about new features</p>
<hr />
<div>{{Languages}}<br />
<br />
== Alternate Guides ==<br />
<br />
Much of this page is somewhat out of date at this point. A more current and detailed summary is available at <br />
[http://www.postgresonline.com/journal/index.php?/archives/133-Database-Administration,-Reporting,-and-Light-application-development.html Database Administration, Reporting, and Light application development]<br />
<br />
== Open Source / Free Software ==<br />
<br />
=== pgModeler ===<br />
<br />
PostgreSQL Database Modeler<br />
<br />
http://pgmodeler.com.br<br />
<br />
PostgreSQL Database Modeler, or simply, pgModeler is an open source tool for modeling databases that merges the classical concepts of entity-relationship diagrams with specific features that only PostgreSQL implements. The pgModeler translates the models created by the user to SQL code and apply them onto database clusters from version 8.0 to 9.1.<br />
<br />
=== pgAdmin III ===<br />
<br />
http://www.pgadmin.org/<br />
<br />
MS Windows, GNU/Linux, FreeBSD, Mac OS X, OpenBSD, Solaris<br />
<br />
Admin<br />
<br />
pgAdmin III is THE Open Source management tool for your PostgreSQL databases. Features full Unicode support, fast, multithreaded query and data editting tools and support for all PostgreSQL object types.<br />
<br />
pgAdmin III is bundled with the Windows installer, and you can use that such a client to administer a remote server on another OS. Note that binary packages for platforms like RPM don't show up in every point release, you currently have to go back to v1.8.0 to get the last full set of packages.<br />
<br />
Free Administration Centre for the PostgreSQL database. Includes a graphical administration interface, an SQL query tool, a procedural code editor and much more. pgAdmin III is designed to answer the needs of most users, from writing simple SQL queries to developing complex databases. The graphical interface supports all PostgreSQL features and makes administration easy. Available in more than 30 languages and for several operating systems. <br />
<br />
=== phpPgAdmin ===<br />
<br />
http://sourceforge.net/projects/phppgadmin<br />
<br />
browser-based, requires webserver<br />
<br />
Admin<br />
<br />
Similar to the ever-popular phpMyAdmin, enhanced for PostgreSQL, supports browsing and modification of most types of PostgreSQL database objects, plus execution of ad-hoc queries. Maintained by (who else?) the phpPgAdmin team. (JMB 11.2002).<br />
<br />
phpPgAdmin (and the required Apache and PHP packages) may be easily installed using Stack Builder if you are running a one-click-installer PostgreSQL distribution.<br />
<br />
=== TeamPostgreSQL ===<br />
<br />
http://www.teampostgresql.com<br />
<br />
browser-based, webserver included<br />
<br />
AJAX/JavaScript-powered web interface for PostgreSQL administration. Browse, maintain and create data and database objects from anywhere, in the web browser. Supports SSH for both the web interface and the database connections. Rich interface with tabbed SQL editor with auto-completion, inline row-editing widgets, click-through foreign key navigation between rows and tables, 'favorites' management for commonly used scripts, and more.<br />
<br />
Installers available for Windows, Mac and Linux, alternatively download a simple cross-platform archive that runs anywhere with simple script.<br />
<br />
=== Adminer ===<br />
<br />
http://www.adminer.org<br />
<br />
browser-based, requires webserver<br />
<br />
Adminer (formerly phpMinAdmin) is a full-featured database management tool written in PHP. Conversely to phpMyAdmin, it consist of a single file ready to deploy to the target server. Adminer is available for MySQL, PostgreSQL, SQLite, MS SQL and Oracle.<br />
<br />
<br />
=== JetBrains IDEs - IntelliJ IDEA, PHPStorm, PyCharm, RubyMine, etc ... ===<br />
<br />
http://www.jetbrains.com/<br />
<br />
Windows, Mac OS X, Linux<br />
<br />
JetBrains Products - for example PHPStorm - have built-in database plugin.<br />
<br />
After you configured the data sources of your project, you can easily create tables, foreign keys, indexes much easier than usually, because the IDE is very smart; for example by foreign keys it automatically sets the name of the key, and the related columns. For me it is so far the best experience by creating a basic database schema. Even with editable EER models was it slower...<br />
By the settings of your data source you can configure the SQL dialect of your database. After that if you want to add stored procedures or triggers, you will have code completion which is favorable too. So I think JetBrains products speed up your work if you exactly know what you want, and how can you make it.<br />
<br />
For PHPStorm (what I currently use) there is a free license for open source projects. For enterprise usage there is a 30 days trial, after that you can buy personal or commercial license which are very cheap compared to other products.<br />
<br />
=== Libre Office ===<br />
<br />
http://www.libreoffice.org/download/3-5-new-features-and-fixes/<br />
<br />
New native driver for PostgreSQL databases (for versions > 8.4 - support for version 8.4 will be included in LibreOffice 3.5.1). <br />
<br />
=== OpenOffice.org ===<br />
<br />
http://dba.openoffice.org/drivers/postgresql/index.html <br />
<br />
Windows, Linux, Solaris<br />
<br />
Verbatim from the above URL :<br />
<br />
The postgresql SDBC Driver allows to use the postgresql database from OpenOffice.org without any wrapper layer such as odbc or jdbc. The current version 0.7.6 can be considerded as good beta quality ( with some known issues and missing features). The driver is aimed at the 1.1 OpenOffice.org and OpenOffice.org 2.x versions, it does not work with OOo1.0.x trees. The final aim is to have an easier to use, faster, more feature rich database driver than the jdbc-odbc solution. The current version should already allow this in most places.<br />
<br />
=== The Red Hat Database Graphical Tools, RHDB Administrator and Visual Explain ===<br />
<br />
http://sources.redhat.com/rhdb<br />
<br />
Linux<br />
<br />
Admin<br />
<br />
Red Hat has stood by their word and open-sourced their database tools which ship with Red Hat Database for the benefit of the PostgreSQL community. I haven't used these, a review would be nice. Developed by Red Hat, Inc. (JMB 11.2002)<br />
<br />
<br />
=== GNOME-DB ===<br />
<br />
http://www.gnome-db.org<br />
<br />
Linux, Unix<br />
<br />
Admin<br />
<br />
Database administration/user tool for GNOME, based on libgda/libgnomedb, which are a complete database-independent access layer for UNIX systems, with support for PostgreSQL, MySQL, Sybase, MS SQL Server, Oracle, Interbase/Firebird, MS Access files, xBase.<br />
<br />
=== TOra, an Oracle tool with some PostgreSQL support ===<br />
<br />
http://tora.sf.net/<br />
<br />
Linux & Windows<br />
<br />
Admin<br />
<br />
An Oracle database administration interface, with limited ability to browse PostgreSQL databases (tables, views, and functions only). I'm told that if you have the Oracle libraries, Tora's sophisticated function editor will work for PostgreSQL as well. Developed by Henrik Johnson as a Quest Toad clone. (JMB 11.2002)<br />
<br />
=== Kexi ===<br />
<br />
http://www.calligra.org/kexi/<br />
http://www.kexi-project.org/<br />
<br />
Kexi is part of the Calligra Suite and is released under the GNU General Public License (GPL) and LGPL. <br />
<br />
available for <br />
FreeBSD & Linux, Apple, Windows, (Android)<br />
<br />
<br />
=== SQuirreL ===<br />
<br />
http://squirrel-sql.sourceforge.net/<br />
<br />
Macintosh/Windows<br />
<br />
SQuirreL SQL Client is a graphical SQL client written in Java that will allow you to view the structure of a JDBC compliant database, browse the data in tables, issue SQL commands etc.<br />
<br />
=== AnySQL Maestro ===<br />
<br />
http://www.sqlmaestro.com/products/anysql/maestro/<br />
<br />
Windows<br />
<br />
AnySQL Maestro is a freeware tool for administering any database engine (PostgreSQL, SQL Server, Oracle, MySQL, MS Access, etc.), which is accessible via ODBC driver or OLE DB provider. Includes Database Designer, Visual Query Builder, BLOB Viewer/Editor, SQL Editor, Data export/import and other features.<br />
<br />
=== SQL Workbench/J ===<br />
<br />
http://www.sql-workbench.net<br />
<br />
Java (multi-platform)<br />
<br />
An OpenSource SQL GUI tool similar to Squirrel. Data can be edited directly in the result set. It has strong support for exporting and importing data between databases using its own SQL command extension. It can be used in GUI mode or as a console application. All SQL Workbench specific commands can also be run in batch mode to automate export and import task. It supports schema comparison ("diff") and copying data between databases.<br />
<br />
=== PostgreSQL PHP Generator ===<br />
<br />
http://www.sqlmaestro.com/products/postgresql/phpgenerator/<br />
<br />
Windows<br />
<br />
PostgreSQL PHP Generator is a freeware but powerful PostgreSQL GUI frontend that allows you to generate high-quality PHP scripts for the selected tables, views and queries for the further working with these objects through the web.<br />
<br />
=== WaveMaker Ajax GUI Design Tool ===<br />
<br />
http://www.wavemaker.com/<br />
<br />
Windows, Macintosh, Linux<br />
<br />
WaveMaker is an Ajax-based GUI design tool for Postgres. WaveMaker is built using itself! WaveMaker generates a standard Java WAR file based on Spring, Hibernate and Dojo. WaveMaker supports Postgres schema creation and import and includes a visual query editor.<br />
<br />
=== Druid III ===<br />
<br />
http://druid.sourceforge.net/<br />
<br />
Java (multi-platform)<br />
<br />
The druid is a tools that allows users to create databases in a graphical way. The user can add tables, fields, folders to group tables and can modify most of the database options that follow the SQL-92 standard. In addition to sql options, the user can document each table and each field with HTML information. Once the database is created, the druid can generate:<br />
<br />
* HTML documentation: for all tables, with browsing facilities<br />
* PDF documentation: for all tables<br />
* Java classes: (one class for each table) that contain tables' constants (such as fields size) plus java code added by the user<br />
* A data dictionarythat contains all tables and fields present in the database<br />
* SQL script which contains all table definitions that can be piped to the DBMS<br />
* And much more info...<br />
<br />
=== Power*Architect === <br />
<br />
http://www.sqlpower.ca/page/architect<br />
<br />
Java (multi-platform) <br />
<br />
Power*Architect is an ERD modelling tool that is based on Java and JDBC. Support for forward and reverse engineering PostgreSQL databases is supported. It's OpenSource with a GPL license.<br />
<br />
=== RISE - Model Driven Development using ERD / UML === <br />
<br />
http://www.risetobloome.com<br />
<br />
Windows<br />
<br />
RISE is a free software suite for model driven information system development. Use a single source RISE model to generate your entire information solution including database, web services and documentation. Boost development throughput and improve quality and maintainability!<br />
<br />
The RISE user experience is based on a project concept, similar to that of most integrated development environments. The user works with resources and drawings that are part of a single development project.<br />
<br />
RISE supports a fully graphical approach to information modeling and system engineering, using ERD (Entity Relationship Diagram) as well as UML (Unified Modeling Language). This includes drag-and-drop of entities, their attributes and relations, as well as of views and entire web services.<br />
<br />
RISE supports graphic editing of complex objects such as views and orchestrated methods. RISE automatically safeguards the combination process, thus, assuring a technically correct result. <br />
<br />
RISE provides several ways to generate code from the model; directly to file, via the RISE Server or as an Internet service. RISE provides code generators for the database layer (SQL/DDL) as well as for the server side application layer (web services and persistent classes). All database scripts are incremental allowing you to install and maintain any number of databases from a single model. <br />
<br />
Feature list<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1355<br />
<br />
=== RISE PostgreSQL code generator === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1889<br />
<br />
Windows<br />
<br />
The RISE PostgreSQL code generator generates native PL/pgSQL scripts. Model your information in the free RISE Editor and generate your database script. The script incrementally updates the tables, columns, indexes and constraints in the database to match the RISE model. Once the database model is updated, the views defined in the RISE model are created in the database and possible default data, entered in the model, is inserted. <br />
<br />
=== RISE PHP for PostgreSQL code generator === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1888<br />
<br />
Windows<br />
<br />
The RISE PHP for PostgreSQL code generator renders PHP source code for database access. Model your information and programming interfaces in the free RISE Editor and generate your code. The generated code implements the classes and methods corresponding to the information interfaces specified in the RISE model. This includes classes for database access and, optionally, classes implementing SOAP/JSON web services and proxy classes assisting the implementation of a PHP SOAP client. <br />
<br />
=== Marshal SQL Utility === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1756<br />
<br />
Windows<br />
<br />
The Marshal SQL Utility is a generic cross database utility with batch execution capabilities. It allows you to test ODBC connections, browse database schemas, discover tables, views and columns. <br />
<br />
Key features of Marshal SQL Utility:<br />
<br />
* Execute any query supported by your database server<br />
* Execute batches of queries<br />
* Discover tables and views in your database<br />
* Discover columns for a selected table or view<br />
* Supports BLOBS and CLOBS<br />
* Save your results to file<br />
* Use any ODBC compliant database such as PostgreSQL.<br />
<br />
=== EMS SQL Manager for PostgreSQL Freeware === <br />
<br />
http://www.sqlmanager.net/en/tools/free<br />
<br />
Windows<br />
<br />
EMS SQL Manager for PostgreSQL Freeware (EMS SQL Manager Lite for PostgreSQL) is an excellent and easy-to-use freeware graphical tool for PostgreSQL database administration. It has the minimal required set of tools for those users who are new to PostgreSQL server and need only its basic functionality.<br />
EMS SQL Manager for PostgreSQL Freeware allows you to work with servers, databases and schemas, view, edit, search, group, sort and filter any data stored in a database, create and execute SQL queries with powerful SQL editor, handle multiple selected objects at a time and much more.<br />
<br />
=== Open Source CMS === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=2017<br />
<br />
Windows<br />
<br />
The CMS is a free Visual Studio 2010 solution template with a set of projects providing a complete Content Management System (CMS) based on RISE Visual Modeling with model, full source, sample site and DB-scripts for PostgreSQL, MySQL and SQL Server.<br />
<br />
It’s a complete ready-to-run Visual Studio solution with model, source code and web clients. It illustrates how to use RISE, how to implement a SOA backend and how to build RIA frontends.<br />
<br />
=== No Longer Supported / Developed ===<br />
<br />
==== Xpg: Java PostgreSQL client ====<br />
<br />
http://www.kazak.ws/xpg<br />
<br />
Most platforms<br />
<br />
Admin<br />
<br />
Java-based PostgreSQL database administrator, with access to tables and data entry, query interface and ability to export query results to HTML reports. Developed by Soluciones Kazak, in Spanish, but available in English as well. (JMB 11.2002)<br />
<br />
(xpg has not been updated since 2004, and is no longer available)<br />
<br />
==== PGInhaler ====<br />
<br />
http://pginhaler.ifrance.com/pginhaler/<br />
<br />
Admin<br />
<br />
It's a free Java based PostgreSQL GUI. Haven't used it yet, but worth knowing about. (J.C.)<br />
<br />
(PGInhaler has not been updated since 2002)<br />
<br />
== Proprietary ==<br />
<br />
=== VSQL++ for PostgreSQL ===<br />
<br />
http://www.sqlpp.com/products/postgresql-management/<br />
<br />
A powerful Postgresql database management tool to help DBA sto manage the database objects easy and quickly.<br />
<br />
=== Nucleon Database Master for PostgreSQL and Others === <br />
<br />
Nucleon Database Master is a modern, powerful, intuitive, easy to use and all in one PostgreSQL MongoDB, Oracle, DB2, Informix, Ingres, SQL Server, SQL Azure, MySQL, FireBird, SQLite client application with a consistent interface that simplifies managing, querying, editing, visualizing, designing and reporting relational and schema-free (NoSQL) database systems. You can connect any database system via ODBC and OleDB connections.Using Database Master, you can execute SQL, LINQ, JSON queries or you can create, edit and delete all database objects such as tables, views, procedures, columns, indexes, collections and triggers. You can execute SQL queries and scripts, view and edit table data including BLOBs (Image, Text or any file), represent tables and its relations as a ER(Entity Relationship) diagram.<br />
<br />
Info:<br />
http://www.nucleonsoftware.com/<br />
Windows, other platforms via WINE <br />
Admin<br />
<br />
=== Lightning Admin for PostgreSQL === <br />
<br />
http://www.amsoftwaredesign.com/<br />
<br />
Windows, other platforms via WINE<br />
<br />
Admin<br />
<br />
Lightning Admin is one of the best GUI admin tools available and sports a modern tabbed MDI interface and is the least expensive full featured GUI admin tool on the market. Compare to Navicat or EMS and save big. Current price is $19.99 per user.<br />
<br />
=== Borland Kylix ===<br />
<br />
http://www.borland.com/kylix<br />
<br />
Linux<br />
<br />
ERD<br />
<br />
driver: http://www.vitavoom.com/Products/pgExpress_Driver/index.html<br />
<br />
The third most popular IDE for Linux, according to a recent Linux Journal poll. Focuses on interface-building for database applications, with some support for browsing database objects (I think). PostgreSQL native drivers are available free from Vita Voom Software. (JMB 11.2002)<br />
<br />
=== DBOne ===<br />
<br />
http://www.dbone.info<br />
<br />
Windows<br />
<br />
Admin<br />
<br />
DBOne is a shareware Database Administration Tool for PostgreSQL and Oracle, MSSQL, Sybase, DB2, SAPDB, Interbase/Firbird, MySQL.<br />
<br />
=== DBTools Manager ===<br />
<br />
http://www.dbtools.com.br<br />
<br />
Windows<br />
<br />
Admin<br />
<br />
Freeware, available for PostgreSQL and MySQL, allows managing all aspects of the database: db, table, triggers, functions, etc. Includes import/export wizards to migrate data and structure to/from other database engines. Developed by DBTools Software.<br />
<br />
=== PgManager ===<br />
<br />
http://www.ems-hitech.com/pgmanager<br />
<br />
Windows, Linux version just released<br />
<br />
Admin<br />
<br />
Basically a proprietary, more powerful version of PGAdmin II or PGAccess. Adds support for trigger and constraint editing, metadata logging, and query monitoring. Also includes multiple-format data import/export tools, which are also available on their own for Linux. Developed by EMS Hitech. (JMB 4.2003).<br />
<br />
<br />
<br />
=== Rekall ===<br />
<br />
http://www.thekompany.com/products/rekall<br />
<br />
Linux<br />
<br />
ERD<br />
<br />
Designed by The Kompany as a Linux-based competitor to MS Access, this simple interface and database interface-builder is unfortunately designed for MySQL and has some problems with PostgreSQL. Was still buggy in May 2002, but may be improved by now. Supports limited browsing of database objects, creation of data entry forms and reports. (JMB 11.2002)<br />
<br />
=== Data Architect ===<br />
<br />
http://www.thekompany.com/products/dataarchitect<br />
<br />
Linux<br />
<br />
ERD<br />
<br />
I'm trying DataArchitect 2 from theKompany now for 6 month. Highly recommended if you want an easy to use DB-Design Tool, but generated SQL-Scripts needs some rework. PostgreSQL is supported, you easily can create Stored Procedures, Foreign Keys, Views and Triggers. (Bernd, 1.2003)<br />
<br />
=== SyBase Power Designer ===<br />
<br />
http://www.sybase.com/products/enterprisemodeling/powerdesigner<br />
<br />
Admin<br />
<br />
Sybase PowerDesigner is power tool with built in PostgreSQL support. It support tables, views, triggers, constraints and referential integrity. More advanced than Data Architect.<br />
<br />
=== Microsoft Access === <br />
<br />
http://office.microsoft.com<br />
<br />
Windows + ODBC only<br />
<br />
ERD, Admin<br />
<br />
Yes, you can use MS Access as a PostgreSQL database interface. Supports data access to PostgreSQL tables and views; many ODBC-based limitations and errors. I don't need to tell anyone what MS Access' other capabilities are. (JMB 11.2002)<br />
<br />
=== eRWin ===<br />
<br />
http://www.ca.com/products/alm/erwin.htm<br />
<br />
Windows<br />
<br />
ERD<br />
<br />
Apparently a high-end tool by Computer Associates with PostgreSQL support as a downloadable addon for some version(s). Haven't tried this. JC<br />
<br />
=== DeZign for Databases ===<br />
<br />
http://www.datanamic.com<br />
<br />
Windows<br />
<br />
ERD<br />
<br />
DeZign is a database development tool using an entity relationship diagram. It visually supports the lay out of the entities and relations and automatically generates SQL schemas for most leading databases including PostgreSQL.<br />
<br />
=== PGExplorer ===<br />
<br />
http://www.PGExplorer.com<br />
<br />
Windows (Shareware)<br />
<br />
Admin<br />
NOTE this software is not maintained and has not had a new release in many years. Because of it's age it does not support schemas on PGSQL versions 7.3 and up.<br />
<br />
Postgres Explorer is a full-featured GUI postgres development tool. Features include a tree view of your databases, and database objects. You can reverse engineer SQL statements from your database objects , modify the SQL and execute it. Wizards will guide you through the process to generate SQL for various objects and statements. The latest release includes a Graphical Select Query Designer (anonymous, 4.2003)<br />
<br />
=== Case Studio 2 ===<br />
<br />
http://www.casestudio.com<br />
<br />
Windows<br />
<br />
ERD<br />
<br />
I just downloaded the trial version, so far it looks real promising and claims to support PostgreSQL. Handles reverse engineering of existing databases, and has a real nice interface for setting up tables, relationships etc. You can get a lite or full version. The description from the website... Professional database modeling tool for various databases. CASE Studio 2 includes following key features:<br />
<br />
LITE version features + Reverse Engineering from various database systems Version Manager Data Flow Diagrams Definition of user defined variables Large COM interface Users, User groups and User permission support and many more.<br />
<br />
=== pgEdit ===<br />
<br />
http://pgedit.com<br />
<br />
Macintosh/Windows<br />
<br />
pgEdit is a high performance SQL editor and development environment designed specifically for PostgreSQL relational databases. pgEdit features include SQL syntax coloring, direct source code execution, PHP support, integrated documentation, and extensive customizable editing facilities.<br />
<br />
pgEdit uses psql, the interactive terminal application included with every PostgreSQL installation. This makes it easy to develop with pgEdit and then transfer your work to any PostgreSQL installation for maintenance and production tasks.<br />
<br />
pgEdit is a native application for both Macintosh and Windows. It does not use Java or require installation of external libraries. You have the option of using the version of psql included with pgEdit or a different version installed anywhere on your hard drive.<br />
<br />
<br />
=== RazorSQL ===<br />
<br />
http://www.razorsql.com/<br />
<br />
Macintosh/Windows/Linux/Solaris<br />
<br />
RazorSQL is an SQL query tool, database browser, SQL editor, and database administration tool that supports PostgreSQL and any other JDBC or ODBC compliant database. Some of the major features are tools for creating, dropping, and altering objects such as tables, views, indexes, triggers, functions, users, and databases; a programming editor that supports 20 different programming languages; import and export tools; auto column and table lookup; and a query builder, query scheduler, and SQL formatter.<br />
<br />
<br />
=== MicroOLAP Database Designer ===<br />
<br />
http://www.microolap.com/products/database/postgresql-designer/<br />
<br />
Windows ODBC<br />
<br />
Database Designer for PostgreSQL is an easy CASE tool with intuitive graphical interface allowing you to build a clear and effective database structure visually, see the complete picture (diagram) representing all the tables, references between them, views, stored procedures and other objects. Then you can easily generate a physical database on a server, modify it according to any changes you made to the diagram using fast ALTER statements.<br />
<br />
<br />
=== Import / Export and synchronization tools for PostgreSQL ===<br />
<br />
http://convertdb.com/postgresql<br />
<br />
Microsoft Windows 8 / 7 / Vista / XP / 2000 / NT.<br />
Software is able to connect to remote PostgreSQL 9.x/7.4 located on Linux, Solaris, Mac OS X, and Windows.<br />
<br />
ConvertDB cross database migration tools assist in data conversion and synchronization among PostgreSQL, MySQL, MS SQL Server, MS Windows SQL Azure, and MS Access databases <br />
<br />
* 1 Million of records can be transferred in 5-10 minutes.<br />
* Bi-directional synchronization between PostgreSQL, MS SQL, MySQL and Oracle <br />
* Scheduling migration and synchronization jobs.<br />
<br />
<br />
=== dbForge Data Compare for PostgreSQL ===<br />
<br />
http://www.devart.com/dbforge/postgresql/datacompare/<br />
<br />
Microsoft Windows 2000/XP/2003/Vista and Windows 7<br />
<br />
'''dbForge Data Compare for PostgreSQL''' by '''Devart''' is a tool for table data comparison and synchronization. When using PostgreSQL data compare tool developer can detect data differences in compared PostgreSQL tables; generate data synchronization script and execute it to eliminate all these differences.<br />
<br />
'''Key features:'''<br />
<br />
* Identify the differences between two databases<br />
* Compare separate tables or table groups by table name mask<br />
* Compare tables with different structure<br />
* Generate a report embodying data diff and save it for further analysis<br />
* Sync data in tables and views in full or in part<br />
* Generate SQL script for database synchronization<br />
* Organize database synchronization according to the schedule<br />
<br />
=== Aqua Data Studio ===<br />
<br />
http://www.aquafold.com/index-postgresql.html<br />
<br />
Java: Windows/Linux/Macintosh OSX/Solaris<br />
<br />
Aqua Data Studio is a management tool for the PostgreSQL relational database w/ administration capabilities and a database query tool. The visual administration features provide users the ability to browse and modify database structures, including schema objects, database storage and maintain database security. An integrated query tool allows users to quickly create, edit and execute SQL queries and scripts. Aqua Data Studio also provides an import and export tool to allow users to easily move data in and out of the PostgreSQL database in and from different data formats.<br />
<br />
=== Tuples ===<br />
<br />
http://www.tuplesapp.com/<br />
<br />
Mac OSX<br />
<br />
Tuples is the first native client for PostgreSQL for Mac OSX. It supports connecting to several servers at the same time, exporting data in several formats and profiling queries. As a native client it is fast, lightweight and a good Mac citizen.<br />
<br />
=== EMS Database Management Tools for PostgreSQL ===<br />
<br />
http://www.sqlmanager.net/en/products/postgresql<br />
<br />
Windows<br />
<br />
PostgreSQL Tools Products Family:<br />
<br />
* [http://www.sqlmanager.net/en/products/studio/postgresql SQL Management Studio for PostgreSQL] - single workbench for administering PostgreSQL databases, managing database schema and objects as well as for database design, migration, extraction, query building, data import, export and database comparison. <br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/manager SQL Manager for PostgreSQL] - high performance graphical tool for PostgreSQL database administration and development. It makes creating and editing PostgreSQL database objects easy and fast, and allows you to run SQL scripts, visually design databases, build SQL queries, extract, print and search metadata, import and export PostgreSQL database data and much more.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/dataexport Data Export for PostgreSQL] - tool to export PostgreSQL database data quickly to any of 19 available formats, including MS Access, MS Excel, MS Word, RTF, HTML, TXT, ODF and more. Data Export for PostgreSQL has a friendly wizard, which allows you to set various options of PostgreSQL export process visually and a command-line utility to automate your PostgreSQL export jobs using the configuration file.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/dataimport Data Import for PostgreSQL] - tool to import data to PostgreSQL tables from MS Excel 97-2007, MS Access, DBF, TXT, CSV, MS Word 2007, RTF, ODF and HTML files. This utility allows you to quickly import data to one or several PostgreSQL tables or views at once, save all PostgreSQL import parameters set on current wizard session, use special batch insert mode to import PostgreSQL data at the maximum possible speed and much more.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/datapump Data Pump for PostgreSQL] - migration tool for converting databases and importing table data from an ADO-compatible source (e.g. MS Access, MS SQL database or any other database with ADO support) to PostgreSQL databases.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/datagenerator Data Generator for PostgreSQL] - tool for generating test data to PostgreSQL database tables. The utility can help you to simulate the database production environment and allows you to populate several PostgreSQL database tables with test data simultaneously, define tables for generating data, set value ranges, control a wide variety of generation parameters for each field type and much more.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/dbcomparer DB Comparer for PostgreSQL] - tool for comparing PostgreSQL database schemas and discovering differences in their structures. You can view all the differences in compared database objects and execute an automatically generated script to synchronize structure of PostgreSQL databases and eliminate these differences.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/extract DB Extract for PostgreSQL] - easy-to-use tool for creating PostgreSQL database backups in a form of SQL scripts. This database script utility allows you to save metadata of all PostgreSQL database objects as well as PostgreSQL table data as database snapshots.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/query SQL Query for PostgreSQL] - useful tool that lets you quickly and simply build SQL queries to PostgreSQL databases. Visual PostgreSQL query building as well as direct editing of a query text is available.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/datacomparer Data Comparer for PostgreSQL] - tool for PostgreSQL data comparison and synchronization. Using this utility you can view all the differences in compared PostgreSQL tables and execute an automatically generated script to eliminate these differences.<br />
<br />
=== Navicat ===<br />
<br />
http://pgsql.navicat.com/<br />
<br />
Windows/Macintosh OSX<br />
<br />
Navicat is a powerful PostgreSQL Database Server administration and development tool. It works with PostgreSQL 8.0 version or above and supports most of the PostgreSQL features including Trigger, Function, View, Manage User, and so on. It is also not only sophisticated enough for professional developers, but also easy to learn for new users. With its well-designed GUI, Navicat lets you quickly and easily create, organize, access and share information in a secure and easy way.<br />
<br />
=== SQL Maestro Group products for PostgreSQL ===<br />
<br />
http://www.sqlmaestro.com/products/postgresql/<br />
<br />
Windows<br />
<br />
[http://www.sqlmaestro.com SQL Maestro Group] offers a number of tools for PostgreSQL.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/maestro/ PostgreSQL Maestro] allows you to create, edit, copy, drop and dump database objects easy and fast. You can also design your database as ER diagram, build queries visually, execute SQL queries and scripts, debug PL/pgSQL functions, view and edit data including BLOBs, represent data as diagrams, export and import data to/from most popular file formats, analyze your data summarized into multidimensional views and hierarchies (OLAP cubes), manage PostgreSQL roles, users, groups and privileges, and use a lot of other admin tools designed for making your work with PostgreSQL database server comfortable and efficient.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/datawizard/ PostgreSQL Data Wizard] provides you with a number of easy-to-use wizards to transfer any database to PostgreSQL, export data from PostgreSQL tables, views and queries to most popular formats, and import data from various sources into PostgreSQL tables.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/codefactory/ PostgreSQL Code Factory] is a GUI tool aimed at the SQL queries and scripts development.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/datasync/ PostgreSQL Data Sync] is a powerful and easy-to-use tool for database contents comparison and synchronization.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/phpgenerator/ PostgreSQL PHP Generator Professional] is a frontend that allows you to generate high-quality PHP applications for your database in a few mouse clicks.<br />
<br />
SQL Maestro Group also produces similar tools for MySQL, Oracle, MS SQL Server, SQLite, Firebird, DB2, SQL Anywhere, and MaxDB.<br />
<br />
=== Datanamic DataDiff for PostgreSQL ===<br />
<br />
http://www.datanamic.com/datadiff-for-postgresql/<br />
<br />
Windows<br />
<br />
Datanamic DataDiff for PostgreSQL is a utility for data comparison and synchronization. Compare data for selected tables in two databases, view differences and publish changes quickly and safely. Flexible comparison and synchronization settings will enable you to set up a customized comparison key and to select tables and fields for comparison and for synchronization.<br />
DB Data Difftective can be used for data migrations, verification of (corrupt) data, data auditing etc.<br />
<br />
=== Datanamic SchemaDiff for PostgreSQL ===<br />
<br />
http://www.datanamic.com/schemadiff-for-postgresql/index.html<br />
<br />
Windows<br />
<br />
Datanamic SchemaDiff for PostgreSQL is a tool for comparison and synchronization of database schemas. It allows you to compare and synchronize tables, views, functions, sequences (generators), stored procedures, triggers and constraints between two databases.<br />
<br />
=== DB MultiRun PostgreSQL Edition ===<br />
<br />
http://www.datanamic.com/multirun/index.html<br />
<br />
Windows<br />
<br />
DB MultiRun is a simple tool to execute multiple SQL scripts on multiple databases quickly.<br />
Define a list of databases, add SQL scripts to execute on these databases and click "execute" to run those scripts on the databases in the list. The multi-threaded execution of the SQL scripts makes it complete the task fast. After execution of the scripts you can examine the results of the executed scripts on each database.<br />
<br />
=== SQLPro ===<br />
<br />
http://www.vive.net/products/sqlpro.htm<br />
<br />
Windows<br />
<br />
SqlPro is an easy to use database GUI tool for six popular databases (Oracle, MySQL, PostgreSQL, SQL Server, SQLite and Access). One IDE makes database administration and development faster and error free. <br />
SQLPro Key Features: color-coding of the SQL, drag-and-drop of objects into the editor pane to save you from typing their names, retrieval of SQL code for things like stored procedures and triggers from the underlying database, and one-click creation of SELECT and INSERT statements. You can open, save and print SQL scripts.<br />
SQLPro uses native drivers to connect to the databases (no ODBS or third party engines to install).<br />
<br />
=== DB Doc ===<br />
<br />
http://www.yohz.com/dbdoc_overview.htm<br />
<br />
Windows<br />
<br />
DB Doc helps you document your database structure and objects. Documents can be generated as PDF reports, HTML pages, or a single compiled HTML file. The layout is fully customizable, and you can quickly view inter-object dependencies using hyperlinks.<br />
<br />
DB Doc supports PostgreSQL 8.3 to 9.3.<br />
<br />
=== SQL Spreadsheets ===<br />
<br />
http://www.yohz.com/sqlxl_overview.htm<br />
<br />
Windows<br />
<br />
SQL Spreadsheets lets you export images and binary files to an Excel spreadsheet. Images can be displayed directly in the spreadsheet itself, or saved to disk and displayed as a link in the spreadsheet.<br />
<br />
=== SQL File Import ===<br />
<br />
http://www.yohz.com/products_sqlfileimport_overview.htm<br />
<br />
Windows<br />
<br />
SQL File Import allows you to upload files, images, and other data into your database, without having to write any SQL statements. SQL File Import supports PostgreSQL, Firebird, MySQL, Oracle, SQLite, SQL Server, and various ODBC-supported databases (e.g. DB2 and PostgreSQL).<br />
<br />
A scripting engine allows you to transform data before importing them into your database. A command line version is also included to allow you to perform unattended upload/import tasks.<br />
<br />
=== SQL Image Viewer ===<br />
<br />
http://www.yohz.com/siv_overview.htm<br />
<br />
Windows<br />
<br />
SQL Image Viewer allows you to retrieve, view, convert and export images stored in Firebird, MySQL, Oracle, SQLite, SQL Server, and various ODBC-supported databases (e.g. DB2 and PostgreSQL). It supports the following image formats: BMP, GIF, JPG, PNG, PSD, and TIFF.<br />
<br />
It also allows you to export binary data, and recognises the following binary file types: PDF, MP3, WAV, 7Z, BZ2, GZ, RAR, ZIP, and has experimental support for DOC, PPT and XLS file types.<br />
<br />
A command line version is also included to allow you to perform unattended scheduled exports of binary data.<br />
<br />
=== SQL Data Sets ===<br />
<br />
http://www.yohz.com/sds_overview.htm<br />
<br />
Windows<br />
<br />
SQL Data Sets allows you to generate and save data sets retrieved from PostgreSQL, Oracle, SQL Server and ODBC-supported database engine. Saved data sets are compressed and can optionally be encrypted. Shared data sets can be opened by other users using the free SQL Data Sets Viewer. Saved data sets can also be queried further without the need to connect to any database engine, can be exported to HTML, Excel, XML and plain text files. The SQL Data Sets Viewer can also display images stored in binary fields, and identify PDF, MP3, WAV, 7Z, BZ2, GZ, RAR, ZIP, and unprotected Microsoft Office files.<br />
<br />
=== SQL Select ===<br />
<br />
http://www.yohz.com/sqlselect_details.htm<br />
<br />
Windows<br />
<br />
SQL Select is a lightweight SQL IDE for PostgreSQL, Oracle, SQL Server, MySQL, Firebird, and ODBC-supported database engine. It also allows you to export result sets to a SQLite database.<br />
<br />
=== Online Web System ===<br />
<br />
[http://www.younicycle.com Younicycle, the Integrated Web System & Web Office]<br />
<br />
Any recent web browser with FlashPlayer<br />
<br />
Provides an integrated set of GUI tools designed to allow PostgreSQL non-experts to effectively collaborate with more advanced PG Users and Web developers. Includes a Table Editor (unlimited Tables), a graphical Query Builder and a Functions Editor, along with additional tools for Content Management, Print Management and Cloud Management. Designed initially to be an alternative to Filemaker, but has continued to advance beyond that goal. Additional, integrated tools include Php (Actions Editor), WYSIWYG Web site Design, Pdf - Report Design & creation tool(with variable data print (PdfLib)), internal chat, datasources, dynamic charts, hosting, publish to web, css/js editor, QRCode generator, CRON, ACL with Role based permissions + additional ancillary tools. Recently added integration with Google Drive (Docs, spreadsheets, Picasa & Calendar), allowing import of Google spreadsheets directly in to PG Tables. All created content can be 'bundled' with the internal SaaS Manager and installed in other accounts (or server installations) with a click. The end result is an online Web System and Web Office allowing 'Novices' to see and work with PG + web developers within an integrated environment. Free - 30 day trial account without credit card info. Also available as a server install (Debian only).<br />
<br />
=== SQLTool Pro Database Editor ===<br />
<br />
http://www.sqltoolpro.com<br />
<br />
Android<br />
<br />
SQLTool Pro is a professional Android SQL editor for MySQL, SQL Server, PostgreSQL, Sybase, and Oracle Databases.<br />
<br />
=== DbVisualizer ===<br />
<br />
http://www.dbvis.com/<br />
<br />
Windows/OS X/Linux/UNIX<br />
<br />
DbVisualizer is a feature rich, intuitive multi-database tool for developers, database administrators, and increasingly for advanced analysts providing a single powerful interface across a wide variety of operating systems. With its easy-to-use and clean interface, DbVisualizer has proven to be one of the most cost effective database tools available, yet to mention that it runs on all major operating systems and supports all major RDBMS that are available. Users only need to learn and master one application. DbVisualizer integrates transparently with the operating system being used. <br />
<br />
[[Category:Tool]]<br />
[[Category:General articles and guides]]<br />
<br />
<br />
=== Valentina Studio (Free) ===<br />
<br />
http://www.valentina-db.com/valentina-studio-overview<br />
<br />
Windows/OS X/Linux/<br />
<br />
Valentina Studio is a powerful PostgreSQL Database Server administration and development tool. It offers for free many advanced editors:<br />
* Schema Editor with Tree and Column views<br />
* Diagram Editor with reverse engineering<br />
* SQL Editor with auto-completion, syntax-highlighting, recent and favorite queries, templates of commands, many result tab-panels, ...<br />
* Data Editor with easy sorting and filtering of records without SQL, in-cell editing.<br />
* Related Data Editor that allow s you to learn related records in different modes.<br />
* Import/Export<br />
* SQL dumps<br />
* and so on ...<br />
<br />
Valentina Studio PRO - adds additional advanced features as:<br />
* Report Editor to developer reports based on Valentina Report Engine with datasources from PostgreSQL and other databases.<br />
* Diagrams forward engineering<br />
* SQL DIFF<br />
* Data Transfer <br />
<br />
[[Category:Tool]]<br />
<br />
=== PG Commander ===<br />
<br />
http://eggerapps.at/pgcommander/<br />
<br />
Mac OS X<br />
<br />
PG Commander is a modern PostgreSQL client for developers and content editors. Great interface for browsing tables & editing records (especially tables with foreign keys). Has a very nice graphical SQL Terminal. Supports PostgreSQL 8.0 and up, including Amazon Redshift. Built-In support for connecting via SSH tunnels.<br />
<br />
=== JackDB ===<br />
<br />
http://www.jackdb.com/<br />
<br />
Html5 Web Browser (Linux/Mac OS X/Windows)<br />
<br />
JackDB is a database client that runs entirely in your web browser. There's no software to install locally so you can use it on Mac OS X, Linux, and Windows and it works on all major modern browsers (eg. Chrome, Firefox, IE, Safari, and Opera). It supports connecting to PostgreSQL, as well as MySQL, Oracle, and SQL Server databases.<br />
<br />
Features:<br />
* Html5 interface with no client installation<br />
* Query editor with syntax highlighting<br />
* Scrolling result sets<br />
* Schema/Object browser<br />
* SSL connections with certificate pinning<br />
* Eliminates password sharing<br />
* Two-factor authentication<br />
* BLOB display (images and Html5 audio/video)<br />
<br />
=== Tadpole DB Hub ===<br />
<br />
https://github.com/hangum/TadpoleForDBTools/wiki<br />
<br />
Tadpole DB Hub is Unified infrastructure tool, various environment based interface for managing Apache Hive, Amazon RDS, CUBRID, MariaDB, MySQL, Oracle, SQLite, MSSQL, PostgreSQL and MongoDB databases. It enables you to handle typical DB over the World Wide Web.<br />
<br />
Features:<br />
* Intuitive web interface (Safari, Chrome, IE 10, Firefox)<br />
* User Management (Admin, Manager, User)<br />
* Select, Insert, Update, Delete<br />
* Download query result<br />
* SQL Syntax Highlighting<br />
* SQL Formatting<br />
* SQL Statement <-> Java, PHP String Literal Each Convert<br />
* SQL Assist<br />
* Execute SQL Statement<br />
* SQL Result Set to CSV<br />
* SQL History And Export text<br />
* Generate SQL Statement (Select, Insert, Update, Delete, Table, View, Index, Procedure, Function, Trigger)<br />
* Generate ER Diagram (Auto Layout)</div>Jakobhttps://wiki.postgresql.org/index.php?title=Community_Guide_to_PostgreSQL_GUI_Tools&diff=20162Community Guide to PostgreSQL GUI Tools2013-06-13T11:46:23Z<p>Jakob: /* Proprietary */ added PG Commander</p>
<hr />
<div>{{Languages}}<br />
<br />
== Alternate Guides ==<br />
<br />
Much of this page is somewhat out of date at this point. A more current and detailed summary is available at <br />
[http://www.postgresonline.com/journal/index.php?/archives/133-Database-Administration,-Reporting,-and-Light-application-development.html Database Administration, Reporting, and Light application development]<br />
<br />
== Open Source / Free Software ==<br />
<br />
=== pgModeler ===<br />
<br />
PostgreSQL Database Modeler<br />
<br />
http://pgmodeler.com.br<br />
<br />
PostgreSQL Database Modeler, or simply, pgModeler is an open source tool for modeling databases that merges the classical concepts of entity-relationship diagrams with specific features that only PostgreSQL implements. The pgModeler translates the models created by the user to SQL code and apply them onto database clusters from version 8.0 to 9.1.<br />
<br />
=== pgAdmin III ===<br />
<br />
http://www.pgadmin.org/<br />
<br />
MS Windows, GNU/Linux, FreeBSD, Mac OS X, OpenBSD, Solaris<br />
<br />
Admin<br />
<br />
pgAdmin III is THE Open Source management tool for your PostgreSQL databases. Features full Unicode support, fast, multithreaded query and data editting tools and support for all PostgreSQL object types.<br />
<br />
pgAdmin III is bundled with the Windows installer, and you can use that such a client to administer a remote server on another OS. Note that binary packages for platforms like RPM don't show up in every point release, you currently have to go back to v1.8.0 to get the last full set of packages.<br />
<br />
Free Administration Centre for the PostgreSQL database. Includes a graphical administration interface, an SQL query tool, a procedural code editor and much more. pgAdmin III is designed to answer the needs of most users, from writing simple SQL queries to developing complex databases. The graphical interface supports all PostgreSQL features and makes administration easy. Available in more than 30 languages and for several operating systems. <br />
<br />
=== phpPgAdmin ===<br />
<br />
http://sourceforge.net/projects/phppgadmin<br />
<br />
browser-based, requires webserver<br />
<br />
Admin<br />
<br />
Similar to the ever-popular phpMyAdmin, enhanced for PostgreSQL, supports browsing and modification of most types of PostgreSQL database objects, plus execution of ad-hoc queries. Maintained by (who else?) the phpPgAdmin team. (JMB 11.2002).<br />
<br />
phpPgAdmin (and the required Apache and PHP packages) may be easily installed using Stack Builder if you are running a one-click-installer PostgreSQL distribution.<br />
<br />
=== Adminer ===<br />
<br />
http://www.adminer.org<br />
<br />
browser-based, requires webserver<br />
<br />
Adminer (formerly phpMinAdmin) is a full-featured database management tool written in PHP. Conversely to phpMyAdmin, it consist of a single file ready to deploy to the target server. Adminer is available for MySQL, PostgreSQL, SQLite, MS SQL and Oracle.<br />
<br />
=== Libre Office ===<br />
<br />
http://www.libreoffice.org/download/3-5-new-features-and-fixes/<br />
<br />
New native driver for PostgreSQL databases (for versions > 8.4 - support for version 8.4 will be included in LibreOffice 3.5.1). <br />
<br />
=== OpenOffice.org ===<br />
<br />
http://dba.openoffice.org/drivers/postgresql/index.html <br />
<br />
Windows, Linux, Solaris<br />
<br />
Verbatim from the above URL :<br />
<br />
The postgresql SDBC Driver allows to use the postgresql database from OpenOffice.org without any wrapper layer such as odbc or jdbc. The current version 0.7.6 can be considerded as good beta quality ( with some known issues and missing features). The driver is aimed at the 1.1 OpenOffice.org and OpenOffice.org 2.x versions, it does not work with OOo1.0.x trees. The final aim is to have an easier to use, faster, more feature rich database driver than the jdbc-odbc solution. The current version should already allow this in most places.<br />
<br />
=== The Red Hat Database Graphical Tools, RHDB Administrator and Visual Explain ===<br />
<br />
http://sources.redhat.com/rhdb<br />
<br />
Linux<br />
<br />
Admin<br />
<br />
Red Hat has stood by their word and open-sourced their database tools which ship with Red Hat Database for the benefit of the PostgreSQL community. I haven't used these, a review would be nice. Developed by Red Hat, Inc. (JMB 11.2002)<br />
<br />
<br />
=== GNOME-DB ===<br />
<br />
http://www.gnome-db.org<br />
<br />
Linux, Unix<br />
<br />
Admin<br />
<br />
Database administration/user tool for GNOME, based on libgda/libgnomedb, which are a complete database-independent access layer for UNIX systems, with support for PostgreSQL, MySQL, Sybase, MS SQL Server, Oracle, Interbase/Firebird, MS Access files, xBase.<br />
<br />
=== TOra, an Oracle tool with some PostgreSQL support ===<br />
<br />
http://tora.sf.net/<br />
<br />
Linux & Windows<br />
<br />
Admin<br />
<br />
An Oracle database administration interface, with limited ability to browse PostgreSQL databases (tables, views, and functions only). I'm told that if you have the Oracle libraries, Tora's sophisticated function editor will work for PostgreSQL as well. Developed by Henrik Johnson as a Quest Toad clone. (JMB 11.2002)<br />
<br />
=== Kexi ===<br />
<br />
http://www.calligra.org/kexi/<br />
http://www.kexi-project.org/<br />
<br />
Kexi is part of the Calligra Suite and is released under the GNU General Public License (GPL) and LGPL. <br />
<br />
available for <br />
FreeBSD & Linux, Apple, Windows, (Android)<br />
<br />
<br />
=== SQuirreL ===<br />
<br />
http://squirrel-sql.sourceforge.net/<br />
<br />
Macintosh/Windows<br />
<br />
SQuirreL SQL Client is a graphical SQL client written in Java that will allow you to view the structure of a JDBC compliant database, browse the data in tables, issue SQL commands etc.<br />
<br />
=== AnySQL Maestro ===<br />
<br />
http://www.sqlmaestro.com/products/anysql/maestro/<br />
<br />
Windows<br />
<br />
AnySQL Maestro is a freeware tool for administering any database engine (PostgreSQL, SQL Server, Oracle, MySQL, MS Access, etc.), which is accessible via ODBC driver or OLE DB provider. Includes Database Designer, Visual Query Builder, BLOB Viewer/Editor, SQL Editor, Data export/import and other features.<br />
<br />
=== SQL Workbench/J ===<br />
<br />
http://www.sql-workbench.net<br />
<br />
Java (multi-platform)<br />
<br />
An OpenSource SQL GUI tool similar to Squirrel. Data can be edited directly in the result set. It has strong support for exporting and importing data between databases using its own SQL command extension. It can be used in GUI mode or as a console application. All SQL Workbench specific commands can also be run in batch mode to automate export and import task. It supports schema comparison ("diff") and copying data between databases.<br />
<br />
=== PostgreSQL PHP Generator ===<br />
<br />
http://www.sqlmaestro.com/products/postgresql/phpgenerator/<br />
<br />
Windows<br />
<br />
PostgreSQL PHP Generator is a freeware but powerful PostgreSQL GUI frontend that allows you to generate high-quality PHP scripts for the selected tables, views and queries for the further working with these objects through the web.<br />
<br />
=== WaveMaker Ajax GUI Design Tool ===<br />
<br />
http://www.wavemaker.com/<br />
<br />
Windows, Macintosh, Linux<br />
<br />
WaveMaker is an Ajax-based GUI design tool for Postgres. WaveMaker is built using itself! WaveMaker generates a standard Java WAR file based on Spring, Hibernate and Dojo. WaveMaker supports Postgres schema creation and import and includes a visual query editor.<br />
<br />
=== Druid III ===<br />
<br />
http://druid.sourceforge.net/<br />
<br />
Java (multi-platform)<br />
<br />
The druid is a tools that allows users to create databases in a graphical way. The user can add tables, fields, folders to group tables and can modify most of the database options that follow the SQL-92 standard. In addition to sql options, the user can document each table and each field with HTML information. Once the database is created, the druid can generate:<br />
<br />
* HTML documentation: for all tables, with browsing facilities<br />
* PDF documentation: for all tables<br />
* Java classes: (one class for each table) that contain tables' constants (such as fields size) plus java code added by the user<br />
* A data dictionarythat contains all tables and fields present in the database<br />
* SQL script which contains all table definitions that can be piped to the DBMS<br />
* And much more info...<br />
<br />
=== Power*Architect === <br />
<br />
http://www.sqlpower.ca/page/architect<br />
<br />
Java (multi-platform) <br />
<br />
Power*Architect is an ERD modelling tool that is based on Java and JDBC. Support for forward and reverse engineering PostgreSQL databases is supported. It's OpenSource with a GPL license.<br />
<br />
=== RISE - Model Driven Development using ERD / UML === <br />
<br />
http://www.risetobloome.com<br />
<br />
Windows<br />
<br />
RISE is a free software suite for model driven information system development. Use a single source RISE model to generate your entire information solution including database, web services and documentation. Boost development throughput and improve quality and maintainability!<br />
<br />
The RISE user experience is based on a project concept, similar to that of most integrated development environments. The user works with resources and drawings that are part of a single development project.<br />
<br />
RISE supports a fully graphical approach to information modeling and system engineering, using ERD (Entity Relationship Diagram) as well as UML (Unified Modeling Language). This includes drag-and-drop of entities, their attributes and relations, as well as of views and entire web services.<br />
<br />
RISE supports graphic editing of complex objects such as views and orchestrated methods. RISE automatically safeguards the combination process, thus, assuring a technically correct result. <br />
<br />
RISE provides several ways to generate code from the model; directly to file, via the RISE Server or as an Internet service. RISE provides code generators for the database layer (SQL/DDL) as well as for the server side application layer (web services and persistent classes). All database scripts are incremental allowing you to install and maintain any number of databases from a single model. <br />
<br />
Feature list<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1355<br />
<br />
=== RISE PostgreSQL code generator === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1889<br />
<br />
Windows<br />
<br />
The RISE PostgreSQL code generator generates native PL/pgSQL scripts. Model your information in the free RISE Editor and generate your database script. The script incrementally updates the tables, columns, indexes and constraints in the database to match the RISE model. Once the database model is updated, the views defined in the RISE model are created in the database and possible default data, entered in the model, is inserted. <br />
<br />
=== RISE PHP for PostgreSQL code generator === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1888<br />
<br />
Windows<br />
<br />
The RISE PHP for PostgreSQL code generator renders PHP source code for database access. Model your information and programming interfaces in the free RISE Editor and generate your code. The generated code implements the classes and methods corresponding to the information interfaces specified in the RISE model. This includes classes for database access and, optionally, classes implementing SOAP/JSON web services and proxy classes assisting the implementation of a PHP SOAP client. <br />
<br />
=== Marshal SQL Utility === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=1756<br />
<br />
Windows<br />
<br />
The Marshal SQL Utility is a generic cross database utility with batch execution capabilities. It allows you to test ODBC connections, browse database schemas, discover tables, views and columns. <br />
<br />
Key features of Marshal SQL Utility:<br />
<br />
* Execute any query supported by your database server<br />
* Execute batches of queries<br />
* Discover tables and views in your database<br />
* Discover columns for a selected table or view<br />
* Supports BLOBS and CLOBS<br />
* Save your results to file<br />
* Use any ODBC compliant database such as PostgreSQL.<br />
<br />
=== EMS SQL Manager for PostgreSQL Freeware === <br />
<br />
http://www.sqlmanager.net/en/tools/free<br />
<br />
Windows<br />
<br />
EMS SQL Manager for PostgreSQL Freeware (EMS SQL Manager Lite for PostgreSQL) is an excellent and easy-to-use freeware graphical tool for PostgreSQL database administration. It has the minimal required set of tools for those users who are new to PostgreSQL server and need only its basic functionality.<br />
EMS SQL Manager for PostgreSQL Freeware allows you to work with servers, databases and schemas, view, edit, search, group, sort and filter any data stored in a database, create and execute SQL queries with powerful SQL editor, handle multiple selected objects at a time and much more.<br />
<br />
=== Open Source CMS === <br />
<br />
http://www.risetobloome.com/Page_1_S.aspx?ITEM=2017<br />
<br />
Windows<br />
<br />
The CMS is a free Visual Studio 2010 solution template with a set of projects providing a complete Content Management System (CMS) based on RISE Visual Modeling with model, full source, sample site and DB-scripts for PostgreSQL, MySQL and SQL Server.<br />
<br />
It’s a complete ready-to-run Visual Studio solution with model, source code and web clients. It illustrates how to use RISE, how to implement a SOA backend and how to build RIA frontends.<br />
<br />
=== No Longer Supported / Developed ===<br />
<br />
==== Xpg: Java PostgreSQL client ====<br />
<br />
http://www.kazak.ws/xpg<br />
<br />
Most platforms<br />
<br />
Admin<br />
<br />
Java-based PostgreSQL database administrator, with access to tables and data entry, query interface and ability to export query results to HTML reports. Developed by Soluciones Kazak, in Spanish, but available in English as well. (JMB 11.2002)<br />
<br />
(xpg has not been updated since 2004, and is no longer available)<br />
<br />
==== PGInhaler ====<br />
<br />
http://pginhaler.ifrance.com/pginhaler/<br />
<br />
Admin<br />
<br />
It's a free Java based PostgreSQL GUI. Haven't used it yet, but worth knowing about. (J.C.)<br />
<br />
(PGInhaler has not been updated since 2002)<br />
<br />
== Proprietary ==<br />
<br />
=== VSQL++ for PostgreSQL ===<br />
<br />
http://www.sqlpp.com/products/postgresql-management/<br />
<br />
A powerful Postgresql database management tool to help DBA sto manage the database objects easy and quickly.<br />
<br />
=== Nucleon Database Master for PostgreSQL and Others === <br />
<br />
Nucleon Database Master is a modern, powerful, intuitive, easy to use and all in one PostgreSQL MongoDB, Oracle, DB2, Informix, Ingres, SQL Server, SQL Azure, MySQL, FireBird, SQLite client application with a consistent interface that simplifies managing, querying, editing, visualizing, designing and reporting relational and schema-free (NoSQL) database systems. You can connect any database system via ODBC and OleDB connections.Using Database Master, you can execute SQL, LINQ, JSON queries or you can create, edit and delete all database objects such as tables, views, procedures, columns, indexes, collections and triggers. You can execute SQL queries and scripts, view and edit table data including BLOBs (Image, Text or any file), represent tables and its relations as a ER(Entity Relationship) diagram.<br />
<br />
Info:<br />
http://www.nucleonsoftware.com/<br />
Windows, other platforms via WINE <br />
Admin<br />
<br />
=== Lightning Admin for PostgreSQL === <br />
<br />
http://www.amsoftwaredesign.com/<br />
<br />
Windows, other platforms via WINE<br />
<br />
Admin<br />
<br />
Lightning Admin is one of the best GUI admin tools available and sports a modern tabbed MDI interface and is the least expensive full featured GUI admin tool on the market. Compare to Navicat or EMS and save big. Current price is $19.99 per user.<br />
<br />
=== Borland Kylix ===<br />
<br />
http://www.borland.com/kylix<br />
<br />
Linux<br />
<br />
ERD<br />
<br />
driver: http://www.vitavoom.com/Products/pgExpress_Driver/index.html<br />
<br />
The third most popular IDE for Linux, according to a recent Linux Journal poll. Focuses on interface-building for database applications, with some support for browsing database objects (I think). PostgreSQL native drivers are available free from Vita Voom Software. (JMB 11.2002)<br />
<br />
=== DBOne ===<br />
<br />
http://www.dbone.info<br />
<br />
Windows<br />
<br />
Admin<br />
<br />
DBOne is a shareware Database Administration Tool for PostgreSQL and Oracle, MSSQL, Sybase, DB2, SAPDB, Interbase/Firbird, MySQL.<br />
<br />
=== DBTools Manager ===<br />
<br />
http://www.dbtools.com.br<br />
<br />
Windows<br />
<br />
Admin<br />
<br />
Freeware, available for PostgreSQL and MySQL, allows managing all aspects of the database: db, table, triggers, functions, etc. Includes import/export wizards to migrate data and structure to/from other database engines. Developed by DBTools Software.<br />
<br />
=== PgManager ===<br />
<br />
http://www.ems-hitech.com/pgmanager<br />
<br />
Windows, Linux version just released<br />
<br />
Admin<br />
<br />
Basically a proprietary, more powerful version of PGAdmin II or PGAccess. Adds support for trigger and constraint editing, metadata logging, and query monitoring. Also includes multiple-format data import/export tools, which are also available on their own for Linux. Developed by EMS Hitech. (JMB 4.2003).<br />
<br />
<br />
<br />
=== Rekall ===<br />
<br />
http://www.thekompany.com/products/rekall<br />
<br />
Linux<br />
<br />
ERD<br />
<br />
Designed by The Kompany as a Linux-based competitor to MS Access, this simple interface and database interface-builder is unfortunately designed for MySQL and has some problems with PostgreSQL. Was still buggy in May 2002, but may be improved by now. Supports limited browsing of database objects, creation of data entry forms and reports. (JMB 11.2002)<br />
<br />
=== Data Architect ===<br />
<br />
http://www.thekompany.com/products/dataarchitect<br />
<br />
Linux<br />
<br />
ERD<br />
<br />
I'm trying DataArchitect 2 from theKompany now for 6 month. Highly recommended if you want an easy to use DB-Design Tool, but generated SQL-Scripts needs some rework. PostgreSQL is supported, you easily can create Stored Procedures, Foreign Keys, Views and Triggers. (Bernd, 1.2003)<br />
<br />
=== SyBase Power Designer ===<br />
<br />
http://www.sybase.com/products/enterprisemodeling/powerdesigner<br />
<br />
Admin<br />
<br />
Sybase PowerDesigner is power tool with built in PostgreSQL support. It support tables, views, triggers, constraints and referential integrity. More advanced than Data Architect.<br />
<br />
=== Microsoft Access === <br />
<br />
http://office.microsoft.com<br />
<br />
Windows + ODBC only<br />
<br />
ERD, Admin<br />
<br />
Yes, you can use MS Access as a PostgreSQL database interface. Supports data access to PostgreSQL tables and views; many ODBC-based limitations and errors. I don't need to tell anyone what MS Access' other capabilities are. (JMB 11.2002)<br />
<br />
=== eRWin ===<br />
<br />
http://www.ca.com/products/alm/erwin.htm<br />
<br />
Windows<br />
<br />
ERD<br />
<br />
Apparently a high-end tool by Computer Associates with PostgreSQL support as a downloadable addon for some version(s). Haven't tried this. JC<br />
<br />
=== DeZign for Databases ===<br />
<br />
http://www.datanamic.com<br />
<br />
Windows<br />
<br />
ERD<br />
<br />
DeZign is a database development tool using an entity relationship diagram. It visually supports the lay out of the entities and relations and automatically generates SQL schemas for most leading databases including PostgreSQL.<br />
<br />
=== PGExplorer ===<br />
<br />
http://www.PGExplorer.com<br />
<br />
Windows (Shareware)<br />
<br />
Admin<br />
NOTE this software is not maintained and has not had a new release in many years. Because of it's age it does not support schemas on PGSQL versions 7.3 and up.<br />
<br />
Postgres Explorer is a full-featured GUI postgres development tool. Features include a tree view of your databases, and database objects. You can reverse engineer SQL statements from your database objects , modify the SQL and execute it. Wizards will guide you through the process to generate SQL for various objects and statements. The latest release includes a Graphical Select Query Designer (anonymous, 4.2003)<br />
<br />
=== Case Studio 2 ===<br />
<br />
http://www.casestudio.com<br />
<br />
Windows<br />
<br />
ERD<br />
<br />
I just downloaded the trial version, so far it looks real promising and claims to support PostgreSQL. Handles reverse engineering of existing databases, and has a real nice interface for setting up tables, relationships etc. You can get a lite or full version. The description from the website... Professional database modeling tool for various databases. CASE Studio 2 includes following key features:<br />
<br />
LITE version features + Reverse Engineering from various database systems Version Manager Data Flow Diagrams Definition of user defined variables Large COM interface Users, User groups and User permission support and many more.<br />
<br />
=== pgEdit ===<br />
<br />
http://pgedit.com<br />
<br />
Macintosh/Windows<br />
<br />
pgEdit is a high performance SQL editor and development environment designed specifically for PostgreSQL relational databases. pgEdit features include SQL syntax coloring, direct source code execution, PHP support, integrated documentation, and extensive customizable editing facilities.<br />
<br />
pgEdit uses psql, the interactive terminal application included with every PostgreSQL installation. This makes it easy to develop with pgEdit and then transfer your work to any PostgreSQL installation for maintenance and production tasks.<br />
<br />
pgEdit is a native application for both Macintosh and Windows. It does not use Java or require installation of external libraries. You have the option of using the version of psql included with pgEdit or a different version installed anywhere on your hard drive.<br />
<br />
<br />
=== RazorSQL ===<br />
<br />
http://www.razorsql.com/<br />
<br />
Macintosh/Windows/Linux/Solaris<br />
<br />
RazorSQL is an SQL query tool, database browser, SQL editor, and database administration tool that supports PostgreSQL and any other JDBC or ODBC compliant database. Some of the major features are tools for creating, dropping, and altering objects such as tables, views, indexes, triggers, functions, users, and databases; a programming editor that supports 20 different programming languages; import and export tools; auto column and table lookup; and a query builder, query scheduler, and SQL formatter.<br />
<br />
<br />
=== MicroOLAP Database Designer ===<br />
<br />
http://www.microolap.com/products/database/postgresql-designer/<br />
<br />
Windows ODBC<br />
<br />
Database Designer for PostgreSQL is an easy CASE tool with intuitive graphical interface allowing you to build a clear and effective database structure visually, see the complete picture (diagram) representing all the tables, references between them, views, stored procedures and other objects. Then you can easily generate a physical database on a server, modify it according to any changes you made to the diagram using fast ALTER statements.<br />
<br />
=== dbForge Data Compare for PostgreSQL ===<br />
<br />
http://www.devart.com/dbforge/postgresql/datacompare/<br />
<br />
Microsoft Windows 2000/XP/2003/Vista and Windows 7<br />
<br />
'''dbForge Data Compare for PostgreSQL''' by '''Devart''' is a tool for table data comparison and synchronization. When using PostgreSQL data compare tool developer can detect data differences in compared PostgreSQL tables; generate data synchronization script and execute it to eliminate all these differences.<br />
<br />
'''Key features:'''<br />
<br />
* Identify the differences between two databases<br />
* Compare separate tables or table groups by table name mask<br />
* Compare tables with different structure<br />
* Generate a report embodying data diff and save it for further analysis<br />
* Sync data in tables and views in full or in part<br />
* Generate SQL script for database synchronization<br />
* Organize database synchronization according to the schedule<br />
<br />
=== Aqua Data Studio ===<br />
<br />
http://www.aquafold.com/index-postgresql.html<br />
<br />
Java: Windows/Linux/Macintosh OSX/Solaris<br />
<br />
Aqua Data Studio is a management tool for the PostgreSQL relational database w/ administration capabilities and a database query tool. The visual administration features provide users the ability to browse and modify database structures, including schema objects, database storage and maintain database security. An integrated query tool allows users to quickly create, edit and execute SQL queries and scripts. Aqua Data Studio also provides an import and export tool to allow users to easily move data in and out of the PostgreSQL database in and from different data formats.<br />
<br />
=== Tuples ===<br />
<br />
http://www.tuplesapp.com/<br />
<br />
Mac OSX<br />
<br />
Tuples is the first native client for PostgreSQL for Mac OSX. It supports connecting to several servers at the same time, exporting data in several formats and profiling queries. As a native client it is fast, lightweight and a good Mac citizen.<br />
<br />
=== EMS Database Management Tools for PostgreSQL ===<br />
<br />
http://www.sqlmanager.net/en/products/postgresql<br />
<br />
Windows<br />
<br />
PostgreSQL Tools Products Family:<br />
<br />
* [http://www.sqlmanager.net/en/products/studio/postgresql SQL Management Studio for PostgreSQL] - single workbench for administering PostgreSQL databases, managing database schema and objects as well as for database design, migration, extraction, query building, data import, export and database comparison. <br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/manager SQL Manager for PostgreSQL] - high performance graphical tool for PostgreSQL database administration and development. It makes creating and editing PostgreSQL database objects easy and fast, and allows you to run SQL scripts, visually design databases, build SQL queries, extract, print and search metadata, import and export PostgreSQL database data and much more.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/dataexport Data Export for PostgreSQL] - tool to export PostgreSQL database data quickly to any of 19 available formats, including MS Access, MS Excel, MS Word, RTF, HTML, TXT, ODF and more. Data Export for PostgreSQL has a friendly wizard, which allows you to set various options of PostgreSQL export process visually and a command-line utility to automate your PostgreSQL export jobs using the configuration file.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/dataimport Data Import for PostgreSQL] - tool to import data to PostgreSQL tables from MS Excel 97-2007, MS Access, DBF, TXT, CSV, MS Word 2007, RTF, ODF and HTML files. This utility allows you to quickly import data to one or several PostgreSQL tables or views at once, save all PostgreSQL import parameters set on current wizard session, use special batch insert mode to import PostgreSQL data at the maximum possible speed and much more.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/datapump Data Pump for PostgreSQL] - migration tool for converting databases and importing table data from an ADO-compatible source (e.g. MS Access, MS SQL database or any other database with ADO support) to PostgreSQL databases.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/datagenerator Data Generator for PostgreSQL] - tool for generating test data to PostgreSQL database tables. The utility can help you to simulate the database production environment and allows you to populate several PostgreSQL database tables with test data simultaneously, define tables for generating data, set value ranges, control a wide variety of generation parameters for each field type and much more.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/dbcomparer DB Comparer for PostgreSQL] - tool for comparing PostgreSQL database schemas and discovering differences in their structures. You can view all the differences in compared database objects and execute an automatically generated script to synchronize structure of PostgreSQL databases and eliminate these differences.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/extract DB Extract for PostgreSQL] - easy-to-use tool for creating PostgreSQL database backups in a form of SQL scripts. This database script utility allows you to save metadata of all PostgreSQL database objects as well as PostgreSQL table data as database snapshots.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/query SQL Query for PostgreSQL] - useful tool that lets you quickly and simply build SQL queries to PostgreSQL databases. Visual PostgreSQL query building as well as direct editing of a query text is available.<br />
<br />
* [http://www.sqlmanager.net/en/products/postgresql/datacomparer Data Comparer for PostgreSQL] - tool for PostgreSQL data comparison and synchronization. Using this utility you can view all the differences in compared PostgreSQL tables and execute an automatically generated script to eliminate these differences.<br />
<br />
=== Navicat ===<br />
<br />
http://pgsql.navicat.com/<br />
<br />
Windows/Macintosh OSX<br />
<br />
Navicat is a powerful PostgreSQL Database Server administration and development tool. It works with PostgreSQL 8.0 version or above and supports most of the PostgreSQL features including Trigger, Function, View, Manage User, and so on. It is also not only sophisticated enough for professional developers, but also easy to learn for new users. With its well-designed GUI, Navicat lets you quickly and easily create, organize, access and share information in a secure and easy way.<br />
<br />
=== SQL Maestro Group products for PostgreSQL ===<br />
<br />
http://www.sqlmaestro.com/products/postgresql/<br />
<br />
Windows<br />
<br />
[http://www.sqlmaestro.com SQL Maestro Group] offers a number of tools for PostgreSQL.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/maestro/ PostgreSQL Maestro] allows you to create, edit, copy, drop and dump database objects easy and fast. You can also design your database as ER diagram, build queries visually, execute SQL queries and scripts, debug PL/pgSQL functions, view and edit data including BLOBs, represent data as diagrams, export and import data to/from most popular file formats, analyze your data summarized into multidimensional views and hierarchies (OLAP cubes), manage PostgreSQL roles, users, groups and privileges, and use a lot of other admin tools designed for making your work with PostgreSQL database server comfortable and efficient.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/datawizard/ PostgreSQL Data Wizard] provides you with a number of easy-to-use wizards to transfer any database to PostgreSQL, export data from PostgreSQL tables, views and queries to most popular formats, and import data from various sources into PostgreSQL tables.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/codefactory/ PostgreSQL Code Factory] is a GUI tool aimed at the SQL queries and scripts development.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/datasync/ PostgreSQL Data Sync] is a powerful and easy-to-use tool for database contents comparison and synchronization.<br />
<br />
* [http://www.sqlmaestro.com/products/postgresql/phpgenerator/ PostgreSQL PHP Generator Professional] is a frontend that allows you to generate high-quality PHP applications for your database in a few mouse clicks.<br />
<br />
SQL Maestro Group also produces similar tools for MySQL, Oracle, MS SQL Server, SQLite, Firebird, DB2, SQL Anywhere, and MaxDB.<br />
<br />
=== Datanamic DataDiff for PostgreSQL ===<br />
<br />
http://www.datanamic.com/datadiff-for-postgresql/<br />
<br />
Windows<br />
<br />
Datanamic DataDiff for PostgreSQL is a utility for data comparison and synchronization. Compare data for selected tables in two databases, view differences and publish changes quickly and safely. Flexible comparison and synchronization settings will enable you to set up a customized comparison key and to select tables and fields for comparison and for synchronization.<br />
DB Data Difftective can be used for data migrations, verification of (corrupt) data, data auditing etc.<br />
<br />
=== Datanamic SchemaDiff for PostgreSQL ===<br />
<br />
http://www.datanamic.com/schemadiff-for-postgresql/index.html<br />
<br />
Windows<br />
<br />
Datanamic SchemaDiff for PostgreSQL is a tool for comparison and synchronization of database schemas. It allows you to compare and synchronize tables, views, functions, sequences (generators), stored procedures, triggers and constraints between two databases.<br />
<br />
=== DB MultiRun PostgreSQL Edition ===<br />
<br />
http://www.datanamic.com/multirun/index.html<br />
<br />
Windows<br />
<br />
DB MultiRun is a simple tool to execute multiple SQL scripts on multiple databases quickly.<br />
Define a list of databases, add SQL scripts to execute on these databases and click "execute" to run those scripts on the databases in the list. The multi-threaded execution of the SQL scripts makes it complete the task fast. After execution of the scripts you can examine the results of the executed scripts on each database.<br />
<br />
=== SQLPro ===<br />
<br />
http://www.vive.net/products/sqlpro.htm<br />
<br />
Windows<br />
<br />
SqlPro is an easy to use database GUI tool for six popular databases (Oracle, MySQL, PostgreSQL, SQL Server, SQLite and Access). One IDE makes database administration and development faster and error free. <br />
SQLPro Key Features: color-coding of the SQL, drag-and-drop of objects into the editor pane to save you from typing their names, retrieval of SQL code for things like stored procedures and triggers from the underlying database, and one-click creation of SELECT and INSERT statements. You can open, save and print SQL scripts.<br />
SQLPro uses native drivers to connect to the databases (no ODBS or third party engines to install).<br />
<br />
=== SQL File Import ===<br />
<br />
http://www.yohz.com/products_sqlfileimport_overview.htm<br />
<br />
Windows<br />
<br />
SQL File Import allows you to upload files, images, and other data into your database, without having to write any SQL statements. SQL File Import supports PostgreSQL, Firebird, MySQL, Oracle, SQLite, SQL Server, and various ODBC-supported databases (e.g. DB2 and PostgreSQL).<br />
<br />
A scripting engine allows you to transform data before importing them into your database. A command line version is also included to allow you to perform unattended upload/import tasks.<br />
<br />
=== SQL Image Viewer ===<br />
<br />
http://www.yohz.com/products_sqlimageviewer_overview.htm<br />
<br />
Windows<br />
<br />
SQL Image Viewer allows you to retrieve, view, convert and export images stored in Firebird, MySQL, Oracle, SQLite, SQL Server, and various ODBC-supported databases (e.g. DB2 and PostgreSQL). It supports the following image formats: BMP, GIF, JPG, PNG, PSD, and TIFF.<br />
<br />
It also allows you to export binary data, and recognises the following binary file types: PDF, MP3, WAV, 7Z, BZ2, GZ, RAR, ZIP, and has experimental support for DOC, PPT and XLS file types.<br />
<br />
A command line version is also included to allow you to perform unattended scheduled exports of binary data.<br />
<br />
=== SQL Data Sets ===<br />
<br />
http://www.yohz.com/products_sqldatasets_overview.htm<br />
<br />
Windows<br />
<br />
SQL Data Sets allows you to generate and save data sets retrieved from PostgreSQL, Oracle, SQL Server and ODBC-supported database engine. Saved data sets are compressed and can optionally be encrypted. Shared data sets can be opened by other users using the free SQL Data Sets Viewer. Saved data sets can also be queried further without the need to connect to any database engine, can be exported to HTML, Excel, XML and plain text files. The SQL Data Sets Viewer can also display images stored in binary fields, and identify PDF, MP3, WAV, 7Z, BZ2, GZ, RAR, ZIP, and unprotected Microsoft Office files.<br />
<br />
=== SQL Select ===<br />
<br />
http://www.yohz.com/products_sqlselect.htm<br />
<br />
Windows<br />
<br />
SQL Select is a lightweight SQL IDE for PostgreSQL, Oracle, SQL Server, MySQL, Firebird, and ODBC-supported database engine. It also allows you to export result sets to a SQLite database.<br />
<br />
=== Online Web System ===<br />
<br />
[http://www.younicycle.com Younicycle, the Integrated Web System & Web Office]<br />
<br />
Any recent web browser with FlashPlayer<br />
<br />
Provides an integrated set of GUI tools designed to allow PostgreSQL non-experts to effectively collaborate with more advanced PG Users and Web developers. Includes a Table Editor (unlimited Tables), a graphical Query Builder and a Functions Editor, along with additional tools for Content Management, Print Management and Cloud Management. Designed initially to be an alternative to Filemaker, but has continued to advance beyond that goal. Additional, integrated tools include Php (Actions Editor), WYSIWYG Web site Design, Pdf - Report Design & creation tool(with variable data print (PdfLib)), internal chat, datasources, dynamic charts, hosting, publish to web, css/js editor, QRCode generator, CRON, ACL with Role based permissions + additional ancillary tools. Recently added integration with Google Drive (Docs, spreadsheets, Picasa & Calendar), allowing import of Google spreadsheets directly in to PG Tables. All created content can be 'bundled' with the internal SaaS Manager and installed in other accounts (or server installations) with a click. The end result is an online Web System and Web Office allowing 'Novices' to see and work with PG + web developers within an integrated environment. Free - 30 day trial account without credit card info. Also available as a server install (Debian only).<br />
<br />
=== SQLTool Pro Database Editor ===<br />
<br />
http://www.sqltoolpro.com<br />
<br />
Android<br />
<br />
SQLTool Pro is a professional Android SQL editor for MySQL, SQL Server, PostgreSQL, Sybase, and Oracle Databases.<br />
<br />
=== DbVisualizer ===<br />
<br />
http://www.dbvis.com/<br />
<br />
Windows/OS X/Linux/UNIX<br />
<br />
DbVisualizer is a feature rich, intuitive multi-database tool for developers, database administrators, and increasingly for advanced analysts providing a single powerful interface across a wide variety of operating systems. With its easy-to-use and clean interface, DbVisualizer has proven to be one of the most cost effective database tools available, yet to mention that it runs on all major operating systems and supports all major RDBMS that are available. Users only need to learn and master one application. DbVisualizer integrates transparently with the operating system being used. <br />
<br />
[[Category:Tool]]<br />
[[Category:General articles and guides]]<br />
<br />
<br />
=== Valentina Studio (Free) ===<br />
<br />
http://www.valentina-db.com/valentina-studio-overview<br />
<br />
Windows/OS X/Linux/<br />
<br />
Valentina Studio is a powerful PostgreSQL Database Server administration and development tool. It offers for free many advanced editors:<br />
* Schema Editor with Tree and Column views<br />
* Diagram Editor with reverse engineering<br />
* SQL Editor with auto-completion, syntax-highlighting, recent and favorite queries, templates of commands, many result tab-panels, ...<br />
* Data Editor with easy sorting and filtering of records without SQL, in-cell editing.<br />
* Related Data Editor that allow s you to learn related records in different modes.<br />
* Import/Export<br />
* SQL dumps<br />
* and so on ...<br />
<br />
Valentina Studio PRO - adds additional advanced features as:<br />
* Report Editor to developer reports based on Valentina Report Engine with datasources from PostgreSQL and other databases.<br />
* Diagrams forward engineering<br />
* SQL DIFF<br />
* Data Transfer <br />
<br />
[[Category:Tool]]<br />
<br />
=== PG Commander ===<br />
<br />
http://eggerapps.at/pgcommander/<br />
<br />
Mac OS X<br />
<br />
PG Commander is a modern PostgreSQL client for developers and content editors. Great interface for browsing tables & editing records (especially tables with foreign keys). Has a very nice graphical SQL Terminal. Currently in beta, but already quite usable.</div>Jakob