~ubuntu-branches/ubuntu/precise/postgresql-9.1/precise-security

« back to all changes in this revision

Viewing changes to doc/src/sgml/html/release-8-2.html

  • Committer: Bazaar Package Importer
  • Author(s): Martin Pitt
  • Date: 2011-05-11 10:41:53 UTC
  • Revision ID: james.westby@ubuntu.com-20110511104153-psbh2o58553fv1m0
Tags: upstream-9.1~beta1
ImportĀ upstreamĀ versionĀ 9.1~beta1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 
2
<HTML
 
3
><HEAD
 
4
><TITLE
 
5
>Release 8.2</TITLE
 
6
><META
 
7
NAME="GENERATOR"
 
8
CONTENT="Modular DocBook HTML Stylesheet Version 1.79"><LINK
 
9
REV="MADE"
 
10
HREF="mailto:pgsql-docs@postgresql.org"><LINK
 
11
REL="HOME"
 
12
TITLE="PostgreSQL 9.1beta1 Documentation"
 
13
HREF="index.html"><LINK
 
14
REL="UP"
 
15
TITLE="Release Notes"
 
16
HREF="release.html"><LINK
 
17
REL="PREVIOUS"
 
18
TITLE="Release 8.2.1"
 
19
HREF="release-8-2-1.html"><LINK
 
20
REL="NEXT"
 
21
TITLE="Release 8.1.23"
 
22
HREF="release-8-1-23.html"><LINK
 
23
REL="STYLESHEET"
 
24
TYPE="text/css"
 
25
HREF="stylesheet.css"><META
 
26
HTTP-EQUIV="Content-Type"
 
27
CONTENT="text/html; charset=ISO-8859-1"><META
 
28
NAME="creation"
 
29
CONTENT="2011-04-27T21:20:33"></HEAD
 
30
><BODY
 
31
CLASS="SECT1"
 
32
><DIV
 
33
CLASS="NAVHEADER"
 
34
><TABLE
 
35
SUMMARY="Header navigation table"
 
36
WIDTH="100%"
 
37
BORDER="0"
 
38
CELLPADDING="0"
 
39
CELLSPACING="0"
 
40
><TR
 
41
><TH
 
42
COLSPAN="5"
 
43
ALIGN="center"
 
44
VALIGN="bottom"
 
45
><A
 
46
HREF="index.html"
 
47
>PostgreSQL 9.1beta1 Documentation</A
 
48
></TH
 
49
></TR
 
50
><TR
 
51
><TD
 
52
WIDTH="10%"
 
53
ALIGN="left"
 
54
VALIGN="top"
 
55
><A
 
56
TITLE="Release 8.2.1"
 
57
HREF="release-8-2-1.html"
 
58
ACCESSKEY="P"
 
59
>Prev</A
 
60
></TD
 
61
><TD
 
62
WIDTH="10%"
 
63
ALIGN="left"
 
64
VALIGN="top"
 
65
><A
 
66
TITLE="Release Notes"
 
67
HREF="release.html"
 
68
>Fast Backward</A
 
69
></TD
 
70
><TD
 
71
WIDTH="60%"
 
72
ALIGN="center"
 
73
VALIGN="bottom"
 
74
>Appendix E. Release Notes</TD
 
75
><TD
 
76
WIDTH="10%"
 
77
ALIGN="right"
 
78
VALIGN="top"
 
79
><A
 
80
TITLE="Release Notes"
 
81
HREF="release.html"
 
82
>Fast Forward</A
 
83
></TD
 
84
><TD
 
85
WIDTH="10%"
 
86
ALIGN="right"
 
87
VALIGN="top"
 
88
><A
 
89
TITLE="Release 8.1.23"
 
90
HREF="release-8-1-23.html"
 
91
ACCESSKEY="N"
 
92
>Next</A
 
93
></TD
 
94
></TR
 
95
></TABLE
 
96
><HR
 
97
ALIGN="LEFT"
 
98
WIDTH="100%"></DIV
 
99
><DIV
 
100
CLASS="SECT1"
 
101
><H1
 
102
CLASS="SECT1"
 
103
><A
 
104
NAME="RELEASE-8-2"
 
105
>E.53. Release 8.2</A
 
106
></H1
 
107
><DIV
 
108
CLASS="NOTE"
 
109
><BLOCKQUOTE
 
110
CLASS="NOTE"
 
111
><P
 
112
><B
 
113
>Release Date: </B
 
114
>2006-12-05</P
 
115
></BLOCKQUOTE
 
116
></DIV
 
117
><DIV
 
118
CLASS="SECT2"
 
119
><H2
 
120
CLASS="SECT2"
 
121
><A
 
122
NAME="AEN116287"
 
123
>E.53.1. Overview</A
 
124
></H2
 
125
><P
 
126
>    This release adds many functionality and performance improvements that
 
127
    were requested by users, including:
 
128
 
 
129
   <P
 
130
></P
 
131
></P><UL
 
132
><LI
 
133
><P
 
134
>       Query language enhancements including <TT
 
135
CLASS="COMMAND"
 
136
>INSERT/UPDATE/DELETE
 
137
       RETURNING</TT
 
138
>, multirow <TT
 
139
CLASS="LITERAL"
 
140
>VALUES</TT
 
141
> lists, and
 
142
       optional target-table alias in
 
143
       <TT
 
144
CLASS="COMMAND"
 
145
>UPDATE</TT
 
146
>/<TT
 
147
CLASS="COMMAND"
 
148
>DELETE</TT
 
149
>
 
150
      </P
 
151
></LI
 
152
><LI
 
153
><P
 
154
>       Index creation without blocking concurrent
 
155
       <TT
 
156
CLASS="COMMAND"
 
157
>INSERT</TT
 
158
>/<TT
 
159
CLASS="COMMAND"
 
160
>UPDATE</TT
 
161
>/<TT
 
162
CLASS="COMMAND"
 
163
>DELETE</TT
 
164
>
 
165
       operations
 
166
      </P
 
167
></LI
 
168
><LI
 
169
><P
 
170
>       Many query optimization improvements, including support for
 
171
       reordering outer joins
 
172
      </P
 
173
></LI
 
174
><LI
 
175
><P
 
176
>       Improved sorting performance with lower memory usage
 
177
      </P
 
178
></LI
 
179
><LI
 
180
><P
 
181
>       More efficient locking with better concurrency
 
182
      </P
 
183
></LI
 
184
><LI
 
185
><P
 
186
>       More efficient vacuuming
 
187
      </P
 
188
></LI
 
189
><LI
 
190
><P
 
191
>       Easier administration of warm standby servers
 
192
      </P
 
193
></LI
 
194
><LI
 
195
><P
 
196
>       New <TT
 
197
CLASS="LITERAL"
 
198
>FILLFACTOR</TT
 
199
> support for tables and indexes
 
200
      </P
 
201
></LI
 
202
><LI
 
203
><P
 
204
>       Monitoring, logging, and performance tuning additions
 
205
      </P
 
206
></LI
 
207
><LI
 
208
><P
 
209
>       More control over creating and dropping objects
 
210
      </P
 
211
></LI
 
212
><LI
 
213
><P
 
214
>       Table inheritance relationships can be defined
 
215
       for and removed from pre-existing tables
 
216
      </P
 
217
></LI
 
218
><LI
 
219
><P
 
220
>       <TT
 
221
CLASS="COMMAND"
 
222
>COPY TO</TT
 
223
> can copy the output of an arbitrary
 
224
       <TT
 
225
CLASS="COMMAND"
 
226
>SELECT</TT
 
227
> statement
 
228
      </P
 
229
></LI
 
230
><LI
 
231
><P
 
232
>       Array improvements, including nulls in arrays
 
233
      </P
 
234
></LI
 
235
><LI
 
236
><P
 
237
>       Aggregate-function improvements, including multiple-input
 
238
       aggregates and SQL:2003 statistical functions
 
239
      </P
 
240
></LI
 
241
><LI
 
242
><P
 
243
>       Many <TT
 
244
CLASS="FILENAME"
 
245
>contrib/</TT
 
246
> improvements
 
247
      </P
 
248
></LI
 
249
></UL
 
250
><P>
 
251
 
 
252
   </P
 
253
></DIV
 
254
><DIV
 
255
CLASS="SECT2"
 
256
><H2
 
257
CLASS="SECT2"
 
258
><A
 
259
NAME="AEN116332"
 
260
>E.53.2. Migration to Version 8.2</A
 
261
></H2
 
262
><P
 
263
>    A dump/restore using <SPAN
 
264
CLASS="APPLICATION"
 
265
>pg_dump</SPAN
 
266
> is
 
267
    required for those wishing to migrate data from any previous
 
268
    release.
 
269
   </P
 
270
><P
 
271
>    Observe the following incompatibilities:
 
272
   </P
 
273
><P
 
274
></P
 
275
><UL
 
276
><LI
 
277
><P
 
278
>       Set <A
 
279
HREF="runtime-config-compatible.html#GUC-ESCAPE-STRING-WARNING"
 
280
><TT
 
281
CLASS="VARNAME"
 
282
>escape_string_warning</TT
 
283
></A
 
284
>
 
285
       to <TT
 
286
CLASS="LITERAL"
 
287
>on</TT
 
288
> by default (Bruce)
 
289
      </P
 
290
><P
 
291
>       This issues a warning if backslash escapes are used in
 
292
       <A
 
293
HREF="sql-syntax-lexical.html#SQL-SYNTAX-STRINGS"
 
294
>non-escape (non-<TT
 
295
CLASS="LITERAL"
 
296
>E''</TT
 
297
>)
 
298
       strings</A
 
299
>.
 
300
      </P
 
301
></LI
 
302
><LI
 
303
><P
 
304
>       Change the <A
 
305
HREF="sql-expressions.html#SQL-SYNTAX-ROW-CONSTRUCTORS"
 
306
>row
 
307
       constructor syntax</A
 
308
> (<TT
 
309
CLASS="LITERAL"
 
310
>ROW(...)</TT
 
311
>) so that
 
312
       list elements <TT
 
313
CLASS="LITERAL"
 
314
>foo.*</TT
 
315
> will be expanded to a list
 
316
       of their member fields, rather than creating a nested
 
317
       row type field as formerly (Tom)
 
318
      </P
 
319
><P
 
320
>       The new behavior is substantially more useful since it
 
321
       allows, for example, triggers to check for data changes
 
322
       with <TT
 
323
CLASS="LITERAL"
 
324
>IF row(new.*) IS DISTINCT FROM row(old.*)</TT
 
325
>.
 
326
       The old behavior is still available by omitting <TT
 
327
CLASS="LITERAL"
 
328
>.*</TT
 
329
>.
 
330
      </P
 
331
></LI
 
332
><LI
 
333
><P
 
334
>       Make <A
 
335
HREF="functions-comparisons.html#ROW-WISE-COMPARISON"
 
336
>row comparisons</A
 
337
>
 
338
       follow <ACRONYM
 
339
CLASS="ACRONYM"
 
340
>SQL</ACRONYM
 
341
> standard semantics and allow them
 
342
       to be used in index scans (Tom)
 
343
      </P
 
344
><P
 
345
>       Previously, row = and &lt;&gt; comparisons followed the
 
346
       standard but &lt; &lt;= &gt; &gt;= did not.  A row comparison
 
347
       can now be used as an index constraint for a multicolumn
 
348
       index matching the row value.
 
349
      </P
 
350
></LI
 
351
><LI
 
352
><P
 
353
>       Make <A
 
354
HREF="functions-comparison.html"
 
355
>row <TT
 
356
CLASS="LITERAL"
 
357
>IS [<SPAN
 
358
CLASS="OPTIONAL"
 
359
>NOT</SPAN
 
360
>] NULL</TT
 
361
></A
 
362
>
 
363
       tests follow <ACRONYM
 
364
CLASS="ACRONYM"
 
365
>SQL</ACRONYM
 
366
> standard semantics (Tom)
 
367
      </P
 
368
><P
 
369
>       The former behavior conformed to the standard for simple cases
 
370
       with <TT
 
371
CLASS="LITERAL"
 
372
>IS NULL</TT
 
373
>, but <TT
 
374
CLASS="LITERAL"
 
375
>IS NOT NULL</TT
 
376
> would return
 
377
       true if any row field was non-null, whereas the standard says it
 
378
       should return true only when all fields are non-null.
 
379
      </P
 
380
></LI
 
381
><LI
 
382
><P
 
383
>       Make <A
 
384
HREF="sql-set-constraints.html"
 
385
><TT
 
386
CLASS="COMMAND"
 
387
>SET
 
388
       CONSTRAINT</TT
 
389
></A
 
390
> affect only one constraint (Kris Jurka)
 
391
      </P
 
392
><P
 
393
>       In previous releases, <TT
 
394
CLASS="COMMAND"
 
395
>SET CONSTRAINT</TT
 
396
> modified
 
397
       all constraints with a matching name.  In this release,
 
398
       the schema search path is used to modify only the first
 
399
       matching constraint.  A schema specification is also
 
400
       supported.  This more nearly conforms to the SQL standard.
 
401
      </P
 
402
></LI
 
403
><LI
 
404
><P
 
405
>       Remove <TT
 
406
CLASS="LITERAL"
 
407
>RULE</TT
 
408
> permission for tables, for security reasons
 
409
       (Tom)
 
410
      </P
 
411
><P
 
412
>       As of this release, only a table's owner can create or modify
 
413
       rules for the table.  For backwards compatibility,
 
414
       <TT
 
415
CLASS="COMMAND"
 
416
>GRANT</TT
 
417
>/<TT
 
418
CLASS="COMMAND"
 
419
>REVOKE RULE</TT
 
420
> is still accepted,
 
421
       but it does nothing.
 
422
      </P
 
423
></LI
 
424
><LI
 
425
><P
 
426
>       Array comparison improvements (Tom)
 
427
      </P
 
428
><P
 
429
>       Now array dimensions are also compared.
 
430
      </P
 
431
></LI
 
432
><LI
 
433
><P
 
434
>       Change <A
 
435
HREF="functions-array.html"
 
436
>array concatenation</A
 
437
>
 
438
       to match documented behavior (Tom)
 
439
      </P
 
440
><P
 
441
>       This changes the previous behavior where concatenation
 
442
       would modify the array lower bound.
 
443
      </P
 
444
></LI
 
445
><LI
 
446
><P
 
447
>       Make command-line options of <SPAN
 
448
CLASS="APPLICATION"
 
449
>postmaster</SPAN
 
450
>
 
451
       and <A
 
452
HREF="app-postgres.html"
 
453
><SPAN
 
454
CLASS="APPLICATION"
 
455
>postgres</SPAN
 
456
></A
 
457
>
 
458
       identical (Peter)
 
459
      </P
 
460
><P
 
461
>       This allows the postmaster to pass arguments to each backend
 
462
       without using <TT
 
463
CLASS="LITERAL"
 
464
>-o</TT
 
465
>.  Note that some options are now
 
466
       only available as long-form options, because there were conflicting
 
467
       single-letter options.
 
468
      </P
 
469
></LI
 
470
><LI
 
471
><P
 
472
>       Deprecate use of <SPAN
 
473
CLASS="APPLICATION"
 
474
>postmaster</SPAN
 
475
> symbolic link (Peter)
 
476
      </P
 
477
><P
 
478
>       <SPAN
 
479
CLASS="APPLICATION"
 
480
>postmaster</SPAN
 
481
> and <SPAN
 
482
CLASS="APPLICATION"
 
483
>postgres</SPAN
 
484
>
 
485
       commands now act identically, with the behavior determined
 
486
       by command-line options.  The <SPAN
 
487
CLASS="APPLICATION"
 
488
>postmaster</SPAN
 
489
> symbolic link is
 
490
       kept for compatibility, but is not really needed.
 
491
      </P
 
492
></LI
 
493
><LI
 
494
><P
 
495
>       Change <A
 
496
HREF="runtime-config-logging.html#GUC-LOG-DURATION"
 
497
><TT
 
498
CLASS="VARNAME"
 
499
>log_duration</TT
 
500
></A
 
501
>
 
502
       to output even if the query is not output (Tom)
 
503
      </P
 
504
><P
 
505
>       In prior releases, <TT
 
506
CLASS="VARNAME"
 
507
>log_duration</TT
 
508
> only printed if
 
509
       the query appeared earlier in the log.
 
510
      </P
 
511
></LI
 
512
><LI
 
513
><P
 
514
>       Make <A
 
515
HREF="functions-formatting.html"
 
516
><CODE
 
517
CLASS="FUNCTION"
 
518
>to_char(time)</CODE
 
519
></A
 
520
>
 
521
       and <A
 
522
HREF="functions-formatting.html"
 
523
><CODE
 
524
CLASS="FUNCTION"
 
525
>to_char(interval)</CODE
 
526
></A
 
527
>
 
528
       treat <TT
 
529
CLASS="LITERAL"
 
530
>HH</TT
 
531
> and <TT
 
532
CLASS="LITERAL"
 
533
>HH12</TT
 
534
> as 12-hour
 
535
       intervals
 
536
      </P
 
537
><P
 
538
>       Most applications should use <TT
 
539
CLASS="LITERAL"
 
540
>HH24</TT
 
541
> unless they
 
542
       want a 12-hour display.
 
543
      </P
 
544
></LI
 
545
><LI
 
546
><P
 
547
>       Zero unmasked bits in conversion from <A
 
548
HREF="datatype-net-types.html#DATATYPE-INET"
 
549
><TT
 
550
CLASS="TYPE"
 
551
>INET</TT
 
552
></A
 
553
> to <A
 
554
HREF="datatype-net-types.html#DATATYPE-INET"
 
555
><TT
 
556
CLASS="TYPE"
 
557
>CIDR</TT
 
558
></A
 
559
> (Tom)
 
560
      </P
 
561
><P
 
562
>       This ensures that the converted value is actually valid for
 
563
       <TT
 
564
CLASS="TYPE"
 
565
>CIDR</TT
 
566
>.
 
567
      </P
 
568
></LI
 
569
><LI
 
570
><P
 
571
>       Remove <TT
 
572
CLASS="VARNAME"
 
573
>australian_timezones</TT
 
574
> configuration variable
 
575
       (Joachim Wieland)
 
576
      </P
 
577
><P
 
578
>       This variable has been superseded by a more general facility
 
579
       for configuring timezone abbreviations.
 
580
      </P
 
581
></LI
 
582
><LI
 
583
><P
 
584
>       Improve cost estimation for nested-loop index scans (Tom)
 
585
      </P
 
586
><P
 
587
>       This might eliminate the need to set unrealistically small
 
588
       values of <A
 
589
HREF="runtime-config-query.html#GUC-RANDOM-PAGE-COST"
 
590
><TT
 
591
CLASS="VARNAME"
 
592
>random_page_cost</TT
 
593
></A
 
594
>.
 
595
       If you have been using a very small <TT
 
596
CLASS="VARNAME"
 
597
>random_page_cost</TT
 
598
>,
 
599
       please recheck your test cases.
 
600
      </P
 
601
></LI
 
602
><LI
 
603
><P
 
604
>       Change behavior of <TT
 
605
CLASS="COMMAND"
 
606
>pg_dump</TT
 
607
> <TT
 
608
CLASS="LITERAL"
 
609
>-n</TT
 
610
> and
 
611
       <TT
 
612
CLASS="LITERAL"
 
613
>-t</TT
 
614
> options.  (Greg Sabino Mullane)
 
615
      </P
 
616
><P
 
617
>       See the <TT
 
618
CLASS="COMMAND"
 
619
>pg_dump</TT
 
620
> manual page for details.
 
621
      </P
 
622
></LI
 
623
><LI
 
624
><P
 
625
>       Change <A
 
626
HREF="libpq.html"
 
627
><SPAN
 
628
CLASS="APPLICATION"
 
629
>libpq</SPAN
 
630
></A
 
631
>
 
632
       <CODE
 
633
CLASS="FUNCTION"
 
634
>PQdsplen()</CODE
 
635
> to return a useful value (Martijn
 
636
       van Oosterhout)
 
637
      </P
 
638
></LI
 
639
><LI
 
640
><P
 
641
>       Declare <A
 
642
HREF="libpq.html"
 
643
><SPAN
 
644
CLASS="APPLICATION"
 
645
>libpq</SPAN
 
646
></A
 
647
>
 
648
       <CODE
 
649
CLASS="FUNCTION"
 
650
>PQgetssl()</CODE
 
651
> as returning <TT
 
652
CLASS="LITERAL"
 
653
>void *</TT
 
654
>,
 
655
       rather than <TT
 
656
CLASS="LITERAL"
 
657
>SSL *</TT
 
658
> (Martijn van Oosterhout)
 
659
      </P
 
660
><P
 
661
>       This allows applications to use the function without including
 
662
       the OpenSSL headers.
 
663
      </P
 
664
></LI
 
665
><LI
 
666
><P
 
667
>       C-language loadable modules must now include a
 
668
       <A
 
669
HREF="xfunc-c.html#XFUNC-C-DYNLOAD"
 
670
><TT
 
671
CLASS="LITERAL"
 
672
>PG_MODULE_MAGIC</TT
 
673
></A
 
674
>
 
675
       macro call for version compatibility checking
 
676
       (Martijn van Oosterhout)
 
677
      </P
 
678
></LI
 
679
><LI
 
680
><P
 
681
>       For security's sake, modules used by a PL/PerlU function are no
 
682
       longer available to PL/Perl functions (Andrew)
 
683
      </P
 
684
><DIV
 
685
CLASS="NOTE"
 
686
><BLOCKQUOTE
 
687
CLASS="NOTE"
 
688
><P
 
689
><B
 
690
>Note: </B
 
691
>        This also implies that data can no longer be shared between a PL/Perl
 
692
        function and a PL/PerlU function.
 
693
        Some Perl installations have not been compiled with the correct flags
 
694
        to allow multiple interpreters to exist within a single process.
 
695
        In this situation PL/Perl and PL/PerlU cannot both be used in a
 
696
        single backend. The solution is to get a Perl installation which
 
697
        supports multiple interpreters.
 
698
       </P
 
699
></BLOCKQUOTE
 
700
></DIV
 
701
></LI
 
702
><LI
 
703
><P
 
704
>       In <TT
 
705
CLASS="FILENAME"
 
706
>contrib/xml2/</TT
 
707
>, rename <CODE
 
708
CLASS="FUNCTION"
 
709
>xml_valid()</CODE
 
710
> to
 
711
       <CODE
 
712
CLASS="FUNCTION"
 
713
>xml_is_well_formed()</CODE
 
714
> (Tom)
 
715
      </P
 
716
><P
 
717
>       <CODE
 
718
CLASS="FUNCTION"
 
719
>xml_valid()</CODE
 
720
> will remain for backward compatibility,
 
721
       but its behavior will change to do schema checking in a future
 
722
       release.
 
723
      </P
 
724
></LI
 
725
><LI
 
726
><P
 
727
>       Remove <TT
 
728
CLASS="FILENAME"
 
729
>contrib/ora2pg/</TT
 
730
>, now at <A
 
731
HREF="http://www.samse.fr/GPL/ora2pg"
 
732
TARGET="_top"
 
733
>http://www.samse.fr/GPL/ora2pg</A
 
734
>
 
735
      </P
 
736
></LI
 
737
><LI
 
738
><P
 
739
>       Remove contrib modules that have been migrated to PgFoundry:
 
740
       <TT
 
741
CLASS="FILENAME"
 
742
>adddepend</TT
 
743
>, <TT
 
744
CLASS="FILENAME"
 
745
>dbase</TT
 
746
>, <TT
 
747
CLASS="FILENAME"
 
748
>dbmirror</TT
 
749
>,
 
750
       <TT
 
751
CLASS="FILENAME"
 
752
>fulltextindex</TT
 
753
>, <TT
 
754
CLASS="FILENAME"
 
755
>mac</TT
 
756
>, <TT
 
757
CLASS="FILENAME"
 
758
>userlock</TT
 
759
>
 
760
      </P
 
761
></LI
 
762
><LI
 
763
><P
 
764
>       Remove abandoned contrib modules:
 
765
       <TT
 
766
CLASS="FILENAME"
 
767
>mSQL-interface</TT
 
768
>, <TT
 
769
CLASS="FILENAME"
 
770
>tips</TT
 
771
>
 
772
      </P
 
773
></LI
 
774
><LI
 
775
><P
 
776
>       Remove <ACRONYM
 
777
CLASS="ACRONYM"
 
778
>QNX</ACRONYM
 
779
> and <ACRONYM
 
780
CLASS="ACRONYM"
 
781
>BEOS</ACRONYM
 
782
> ports (Bruce)
 
783
      </P
 
784
><P
 
785
>       These ports no longer had active maintainers.
 
786
      </P
 
787
></LI
 
788
></UL
 
789
></DIV
 
790
><DIV
 
791
CLASS="SECT2"
 
792
><H2
 
793
CLASS="SECT2"
 
794
><A
 
795
NAME="AEN116491"
 
796
>E.53.3. Changes</A
 
797
></H2
 
798
><P
 
799
>    Below you will find a detailed account of the
 
800
    changes between <SPAN
 
801
CLASS="PRODUCTNAME"
 
802
>PostgreSQL</SPAN
 
803
> 8.2 and
 
804
    the previous major release.
 
805
   </P
 
806
><DIV
 
807
CLASS="SECT3"
 
808
><H3
 
809
CLASS="SECT3"
 
810
><A
 
811
NAME="AEN116495"
 
812
>E.53.3.1. Performance Improvements</A
 
813
></H3
 
814
><P
 
815
></P
 
816
><UL
 
817
><LI
 
818
><P
 
819
>       Allow the planner to reorder <A
 
820
HREF="queries-table-expressions.html#QUERIES-JOIN"
 
821
>outer
 
822
       joins</A
 
823
> in some circumstances (Tom)
 
824
      </P
 
825
><P
 
826
>       In previous releases, outer joins would always be evaluated in
 
827
       the order written in the query. This change allows the
 
828
       query optimizer to consider reordering outer joins, in cases where
 
829
       it can determine that the join order can be changed without
 
830
       altering the meaning of the query.  This can make a
 
831
       considerable performance difference for queries involving
 
832
       multiple outer joins or mixed inner and outer joins.
 
833
      </P
 
834
></LI
 
835
><LI
 
836
><P
 
837
>       Improve efficiency of <A
 
838
HREF="functions-comparisons.html"
 
839
><TT
 
840
CLASS="LITERAL"
 
841
>IN</TT
 
842
>
 
843
       (list-of-expressions)</A
 
844
> clauses (Tom)
 
845
      </P
 
846
></LI
 
847
><LI
 
848
><P
 
849
>       Improve sorting speed and reduce memory usage (Simon, Tom)
 
850
      </P
 
851
></LI
 
852
><LI
 
853
><P
 
854
>       Improve subtransaction performance (Alvaro, Itagaki Takahiro,
 
855
       Tom)
 
856
      </P
 
857
></LI
 
858
><LI
 
859
><P
 
860
>       Add <TT
 
861
CLASS="LITERAL"
 
862
>FILLFACTOR</TT
 
863
> to <A
 
864
HREF="sql-createtable.html"
 
865
>table</A
 
866
> and <A
 
867
HREF="sql-createindex.html"
 
868
>index</A
 
869
> creation (ITAGAKI
 
870
       Takahiro)
 
871
      </P
 
872
><P
 
873
>       This leaves extra free space in each table or index page,
 
874
       allowing improved performance as the database grows.  This
 
875
       is particularly valuable to maintain clustering.
 
876
      </P
 
877
></LI
 
878
><LI
 
879
><P
 
880
>       Increase default values for <A
 
881
HREF="runtime-config-resource.html#GUC-SHARED-BUFFERS"
 
882
><TT
 
883
CLASS="VARNAME"
 
884
>shared_buffers</TT
 
885
></A
 
886
>
 
887
       and <TT
 
888
CLASS="VARNAME"
 
889
>max_fsm_pages</TT
 
890
>
 
891
       (Andrew)
 
892
      </P
 
893
></LI
 
894
><LI
 
895
><P
 
896
>       Improve locking performance by breaking the lock manager tables into
 
897
       sections
 
898
       (Tom)
 
899
      </P
 
900
><P
 
901
>       This allows locking to be more fine-grained, reducing
 
902
       contention.
 
903
      </P
 
904
></LI
 
905
><LI
 
906
><P
 
907
>       Reduce locking requirements of sequential scans (Qingqing
 
908
       Zhou)
 
909
      </P
 
910
></LI
 
911
><LI
 
912
><P
 
913
>       Reduce locking required for database creation and destruction
 
914
       (Tom)
 
915
      </P
 
916
></LI
 
917
><LI
 
918
><P
 
919
>       Improve the optimizer's selectivity estimates for <A
 
920
HREF="functions-matching.html#FUNCTIONS-LIKE"
 
921
><TT
 
922
CLASS="LITERAL"
 
923
>LIKE</TT
 
924
></A
 
925
>, <A
 
926
HREF="functions-matching.html#FUNCTIONS-LIKE"
 
927
><TT
 
928
CLASS="LITERAL"
 
929
>ILIKE</TT
 
930
></A
 
931
>, and
 
932
       <A
 
933
HREF="functions-matching.html#FUNCTIONS-POSIX-REGEXP"
 
934
>regular expression</A
 
935
>
 
936
       operations (Tom)
 
937
      </P
 
938
></LI
 
939
><LI
 
940
><P
 
941
>       Improve planning of joins to <A
 
942
HREF="ddl-inherit.html"
 
943
>inherited
 
944
       tables</A
 
945
> and <A
 
946
HREF="queries-union.html"
 
947
><TT
 
948
CLASS="LITERAL"
 
949
>UNION
 
950
       ALL</TT
 
951
></A
 
952
> views (Tom)
 
953
      </P
 
954
></LI
 
955
><LI
 
956
><P
 
957
>       Allow <A
 
958
HREF="runtime-config-query.html#GUC-CONSTRAINT-EXCLUSION"
 
959
>constraint
 
960
       exclusion</A
 
961
> to be applied to <A
 
962
HREF="ddl-inherit.html"
 
963
>inherited</A
 
964
> <TT
 
965
CLASS="COMMAND"
 
966
>UPDATE</TT
 
967
> and
 
968
       <TT
 
969
CLASS="COMMAND"
 
970
>DELETE</TT
 
971
> queries (Tom)
 
972
      </P
 
973
><P
 
974
>       <TT
 
975
CLASS="COMMAND"
 
976
>SELECT</TT
 
977
> already honored constraint exclusion.
 
978
      </P
 
979
></LI
 
980
><LI
 
981
><P
 
982
>       Improve planning of constant <TT
 
983
CLASS="LITERAL"
 
984
>WHERE</TT
 
985
> clauses, such as
 
986
       a condition that depends only on variables inherited from an
 
987
       outer query level (Tom)
 
988
      </P
 
989
></LI
 
990
><LI
 
991
><P
 
992
>       Protocol-level unnamed prepared statements are re-planned
 
993
       for each set of <TT
 
994
CLASS="LITERAL"
 
995
>BIND</TT
 
996
> values (Tom)
 
997
      </P
 
998
><P
 
999
>       This improves performance because the exact parameter values
 
1000
       can be used in the plan.
 
1001
      </P
 
1002
></LI
 
1003
><LI
 
1004
><P
 
1005
>       Speed up vacuuming of B-Tree indexes (Heikki Linnakangas,
 
1006
       Tom)
 
1007
      </P
 
1008
></LI
 
1009
><LI
 
1010
><P
 
1011
>       Avoid extra scan of tables without indexes during <A
 
1012
HREF="sql-vacuum.html"
 
1013
><TT
 
1014
CLASS="COMMAND"
 
1015
>VACUUM</TT
 
1016
></A
 
1017
> (Greg Stark)
 
1018
      </P
 
1019
></LI
 
1020
><LI
 
1021
><P
 
1022
>       Improve multicolumn <A
 
1023
HREF="gist.html"
 
1024
><ACRONYM
 
1025
CLASS="ACRONYM"
 
1026
>GiST</ACRONYM
 
1027
></A
 
1028
>
 
1029
       indexing (Oleg, Teodor)
 
1030
      </P
 
1031
></LI
 
1032
><LI
 
1033
><P
 
1034
>       Remove dead index entries before B-Tree page split (Junji
 
1035
       Teramoto)
 
1036
      </P
 
1037
></LI
 
1038
></UL
 
1039
></DIV
 
1040
><DIV
 
1041
CLASS="SECT3"
 
1042
><H3
 
1043
CLASS="SECT3"
 
1044
><A
 
1045
NAME="AEN116567"
 
1046
>E.53.3.2. Server Changes</A
 
1047
></H3
 
1048
><P
 
1049
></P
 
1050
><UL
 
1051
><LI
 
1052
><P
 
1053
>       Allow a forced switch to a new transaction log file (Simon, Tom)
 
1054
      </P
 
1055
><P
 
1056
>       This is valuable for keeping warm standby slave servers
 
1057
       in sync with the master.  Transaction log file switching now also happens
 
1058
       automatically during <A
 
1059
HREF="functions-admin.html"
 
1060
><CODE
 
1061
CLASS="FUNCTION"
 
1062
>pg_stop_backup()</CODE
 
1063
></A
 
1064
>.
 
1065
       This ensures that all
 
1066
       transaction log files needed for recovery can be archived immediately.
 
1067
      </P
 
1068
></LI
 
1069
><LI
 
1070
><P
 
1071
>       Add <ACRONYM
 
1072
CLASS="ACRONYM"
 
1073
>WAL</ACRONYM
 
1074
> informational functions (Simon)
 
1075
      </P
 
1076
><P
 
1077
>       Add functions for interrogating the current transaction log insertion
 
1078
       point and determining <ACRONYM
 
1079
CLASS="ACRONYM"
 
1080
>WAL</ACRONYM
 
1081
> filenames from the
 
1082
       hex <ACRONYM
 
1083
CLASS="ACRONYM"
 
1084
>WAL</ACRONYM
 
1085
> locations displayed by <A
 
1086
HREF="functions-admin.html"
 
1087
><CODE
 
1088
CLASS="FUNCTION"
 
1089
>pg_stop_backup()</CODE
 
1090
></A
 
1091
>
 
1092
       and related functions.
 
1093
      </P
 
1094
></LI
 
1095
><LI
 
1096
><P
 
1097
>       Improve recovery from a crash during <ACRONYM
 
1098
CLASS="ACRONYM"
 
1099
>WAL</ACRONYM
 
1100
> replay (Simon)
 
1101
      </P
 
1102
><P
 
1103
>       The server now does periodic checkpoints during <ACRONYM
 
1104
CLASS="ACRONYM"
 
1105
>WAL</ACRONYM
 
1106
>
 
1107
       recovery, so if there is a crash, future <ACRONYM
 
1108
CLASS="ACRONYM"
 
1109
>WAL</ACRONYM
 
1110
>
 
1111
       recovery is shortened.  This also eliminates the need for
 
1112
       warm standby servers to replay the entire log since the
 
1113
       base backup if they crash.
 
1114
      </P
 
1115
></LI
 
1116
><LI
 
1117
><P
 
1118
>       Improve reliability of long-term <ACRONYM
 
1119
CLASS="ACRONYM"
 
1120
>WAL</ACRONYM
 
1121
> replay
 
1122
       (Heikki, Simon, Tom)
 
1123
      </P
 
1124
><P
 
1125
>       Formerly, trying to roll forward through more than 2 billion
 
1126
       transactions would not work due to XID wraparound.  This meant
 
1127
       warm standby servers had to be reloaded
 
1128
       from fresh base backups periodically.
 
1129
      </P
 
1130
></LI
 
1131
><LI
 
1132
><P
 
1133
>       Add <A
 
1134
HREF="runtime-config-wal.html#GUC-ARCHIVE-TIMEOUT"
 
1135
><TT
 
1136
CLASS="VARNAME"
 
1137
>archive_timeout</TT
 
1138
></A
 
1139
>
 
1140
       to force transaction log file switches at a given interval (Simon)
 
1141
      </P
 
1142
><P
 
1143
>       This enforces a maximum replication delay for warm standby servers.
 
1144
      </P
 
1145
></LI
 
1146
><LI
 
1147
><P
 
1148
>       Add native <A
 
1149
HREF="auth-methods.html#AUTH-LDAP"
 
1150
><ACRONYM
 
1151
CLASS="ACRONYM"
 
1152
>LDAP</ACRONYM
 
1153
></A
 
1154
>
 
1155
       authentication (Magnus Hagander)
 
1156
      </P
 
1157
><P
 
1158
>       This is particularly useful for platforms that do not
 
1159
       support <ACRONYM
 
1160
CLASS="ACRONYM"
 
1161
>PAM</ACRONYM
 
1162
>, such as Windows.
 
1163
      </P
 
1164
></LI
 
1165
><LI
 
1166
><P
 
1167
>       Add <A
 
1168
HREF="sql-grant.html#SQL-GRANT-DESCRIPTION-OBJECTS"
 
1169
><TT
 
1170
CLASS="LITERAL"
 
1171
>GRANT
 
1172
       CONNECT ON DATABASE</TT
 
1173
></A
 
1174
> (Gevik Babakhani)
 
1175
      </P
 
1176
><P
 
1177
>       This gives SQL-level control over database access.  It works as
 
1178
       an additional filter on top of the existing
 
1179
       <A
 
1180
HREF="auth-pg-hba-conf.html"
 
1181
><TT
 
1182
CLASS="FILENAME"
 
1183
>pg_hba.conf</TT
 
1184
></A
 
1185
>
 
1186
       controls.
 
1187
      </P
 
1188
></LI
 
1189
><LI
 
1190
><P
 
1191
>       Add support for <A
 
1192
HREF="ssl-tcp.html"
 
1193
><ACRONYM
 
1194
CLASS="ACRONYM"
 
1195
>SSL</ACRONYM
 
1196
>
 
1197
       Certificate Revocation List</A
 
1198
> (<ACRONYM
 
1199
CLASS="ACRONYM"
 
1200
>CRL</ACRONYM
 
1201
>) files
 
1202
       (Libor Hoho&scaron;)
 
1203
      </P
 
1204
><P
 
1205
>       The server and <SPAN
 
1206
CLASS="APPLICATION"
 
1207
>libpq</SPAN
 
1208
> both recognize <ACRONYM
 
1209
CLASS="ACRONYM"
 
1210
>CRL</ACRONYM
 
1211
>
 
1212
       files now.
 
1213
      </P
 
1214
></LI
 
1215
><LI
 
1216
><P
 
1217
>       <A
 
1218
HREF="gist.html"
 
1219
><ACRONYM
 
1220
CLASS="ACRONYM"
 
1221
>GiST</ACRONYM
 
1222
></A
 
1223
> indexes are
 
1224
       now clusterable (Teodor)
 
1225
      </P
 
1226
></LI
 
1227
><LI
 
1228
><P
 
1229
>       Remove routine autovacuum server log entries (Bruce)
 
1230
      </P
 
1231
><P
 
1232
>       <A
 
1233
HREF="monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE"
 
1234
><TT
 
1235
CLASS="LITERAL"
 
1236
>pg_stat_activity</TT
 
1237
></A
 
1238
>
 
1239
       now shows autovacuum activity.
 
1240
      </P
 
1241
></LI
 
1242
><LI
 
1243
><P
 
1244
>       Track maximum XID age within individual tables, instead of whole databases (Alvaro)
 
1245
      </P
 
1246
><P
 
1247
>       This reduces the overhead involved in preventing transaction
 
1248
       ID wraparound, by avoiding unnecessary VACUUMs.
 
1249
      </P
 
1250
></LI
 
1251
><LI
 
1252
><P
 
1253
>       Add last vacuum and analyze timestamp columns to the stats
 
1254
       collector (Larry Rosenman)
 
1255
      </P
 
1256
><P
 
1257
>       These values now appear in the <A
 
1258
HREF="monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE"
 
1259
><TT
 
1260
CLASS="LITERAL"
 
1261
>pg_stat_*_tables</TT
 
1262
></A
 
1263
>
 
1264
       system views.
 
1265
      </P
 
1266
></LI
 
1267
><LI
 
1268
><P
 
1269
>       Improve performance of statistics monitoring, especially
 
1270
       <TT
 
1271
CLASS="VARNAME"
 
1272
>stats_command_string</TT
 
1273
>
 
1274
       (Tom, Bruce)
 
1275
      </P
 
1276
><P
 
1277
>       This release enables <TT
 
1278
CLASS="VARNAME"
 
1279
>stats_command_string</TT
 
1280
> by
 
1281
       default, now that its overhead is minimal.  This means
 
1282
       <A
 
1283
HREF="monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE"
 
1284
><TT
 
1285
CLASS="LITERAL"
 
1286
>pg_stat_activity</TT
 
1287
></A
 
1288
>
 
1289
       will now show all active queries by default.
 
1290
      </P
 
1291
></LI
 
1292
><LI
 
1293
><P
 
1294
>       Add a <TT
 
1295
CLASS="LITERAL"
 
1296
>waiting</TT
 
1297
> column to <A
 
1298
HREF="monitoring-stats.html#MONITORING-STATS-VIEWS-TABLE"
 
1299
><TT
 
1300
CLASS="LITERAL"
 
1301
>pg_stat_activity</TT
 
1302
></A
 
1303
>
 
1304
       (Tom)
 
1305
      </P
 
1306
><P
 
1307
>       This allows <TT
 
1308
CLASS="STRUCTNAME"
 
1309
>pg_stat_activity</TT
 
1310
> to show all the
 
1311
       information included in the <SPAN
 
1312
CLASS="APPLICATION"
 
1313
>ps</SPAN
 
1314
> display.
 
1315
      </P
 
1316
></LI
 
1317
><LI
 
1318
><P
 
1319
>       Add configuration parameter <A
 
1320
HREF="runtime-config-statistics.html#GUC-UPDATE-PROCESS-TITLE"
 
1321
><TT
 
1322
CLASS="VARNAME"
 
1323
>update_process_title</TT
 
1324
></A
 
1325
>
 
1326
       to control whether the <SPAN
 
1327
CLASS="APPLICATION"
 
1328
>ps</SPAN
 
1329
> display is updated
 
1330
       for every command (Bruce)
 
1331
      </P
 
1332
><P
 
1333
>       On platforms where it is expensive to update the <SPAN
 
1334
CLASS="APPLICATION"
 
1335
>ps</SPAN
 
1336
>
 
1337
       display, it might be worthwhile to turn this off and rely solely on
 
1338
       <TT
 
1339
CLASS="STRUCTNAME"
 
1340
>pg_stat_activity</TT
 
1341
> for status information.
 
1342
      </P
 
1343
></LI
 
1344
><LI
 
1345
><P
 
1346
>       Allow units to be specified in configuration settings
 
1347
       (Peter)
 
1348
      </P
 
1349
><P
 
1350
>       For example, you can now set <A
 
1351
HREF="runtime-config-resource.html#GUC-SHARED-BUFFERS"
 
1352
><TT
 
1353
CLASS="VARNAME"
 
1354
>shared_buffers</TT
 
1355
></A
 
1356
>
 
1357
       to <TT
 
1358
CLASS="LITERAL"
 
1359
>32MB</TT
 
1360
> rather than mentally converting sizes.
 
1361
      </P
 
1362
></LI
 
1363
><LI
 
1364
><P
 
1365
>       Add support for <A
 
1366
HREF="config-setting.html"
 
1367
>include
 
1368
       directives</A
 
1369
> in <TT
 
1370
CLASS="FILENAME"
 
1371
>postgresql.conf</TT
 
1372
> (Joachim
 
1373
       Wieland)
 
1374
      </P
 
1375
></LI
 
1376
><LI
 
1377
><P
 
1378
>       Improve logging of protocol-level prepare/bind/execute
 
1379
       messages (Bruce, Tom)
 
1380
      </P
 
1381
><P
 
1382
>       Such logging now shows statement names, bind parameter
 
1383
       values, and the text of the query being executed.  Also,
 
1384
       the query text is properly included in logged error messages
 
1385
       when enabled by <TT
 
1386
CLASS="VARNAME"
 
1387
>log_min_error_statement</TT
 
1388
>.
 
1389
      </P
 
1390
></LI
 
1391
><LI
 
1392
><P
 
1393
>       Prevent <A
 
1394
HREF="runtime-config-resource.html#GUC-MAX-STACK-DEPTH"
 
1395
><TT
 
1396
CLASS="VARNAME"
 
1397
>max_stack_depth</TT
 
1398
></A
 
1399
>
 
1400
       from being set to unsafe values
 
1401
      </P
 
1402
><P
 
1403
>       On platforms where we can determine the actual kernel stack depth
 
1404
       limit (which is most), make sure that the initial default value of
 
1405
       <TT
 
1406
CLASS="VARNAME"
 
1407
>max_stack_depth</TT
 
1408
> is safe, and reject attempts to set it
 
1409
       to unsafely large values.
 
1410
      </P
 
1411
></LI
 
1412
><LI
 
1413
><P
 
1414
>       Enable highlighting of error location in query in more
 
1415
       cases (Tom)
 
1416
      </P
 
1417
><P
 
1418
>       The server is now able to report a specific error location for
 
1419
       some semantic errors (such as unrecognized column name), rather
 
1420
       than just for basic syntax errors as before.
 
1421
      </P
 
1422
></LI
 
1423
><LI
 
1424
><P
 
1425
>       Fix <SPAN
 
1426
CLASS="QUOTE"
 
1427
>"failed to re-find parent key"</SPAN
 
1428
> errors in
 
1429
       <TT
 
1430
CLASS="COMMAND"
 
1431
>VACUUM</TT
 
1432
> (Tom)
 
1433
      </P
 
1434
></LI
 
1435
><LI
 
1436
><P
 
1437
>       Clean out <TT
 
1438
CLASS="FILENAME"
 
1439
>pg_internal.init</TT
 
1440
> cache files during server
 
1441
       restart (Simon)
 
1442
      </P
 
1443
><P
 
1444
>       This avoids a hazard that the cache files might contain stale
 
1445
       data after PITR recovery.
 
1446
      </P
 
1447
></LI
 
1448
><LI
 
1449
><P
 
1450
>       Fix race condition for truncation of a large relation across a
 
1451
       gigabyte boundary by <TT
 
1452
CLASS="COMMAND"
 
1453
>VACUUM</TT
 
1454
> (Tom)
 
1455
      </P
 
1456
></LI
 
1457
><LI
 
1458
><P
 
1459
>       Fix bug causing needless deadlock errors on row-level locks (Tom)
 
1460
      </P
 
1461
></LI
 
1462
><LI
 
1463
><P
 
1464
>       Fix bugs affecting multi-gigabyte hash indexes (Tom)
 
1465
      </P
 
1466
></LI
 
1467
><LI
 
1468
><P
 
1469
>       Each backend process is now its own process group leader (Tom)
 
1470
      </P
 
1471
><P
 
1472
>       This allows query cancel to abort subprocesses invoked from a
 
1473
       backend or archive/recovery process.
 
1474
      </P
 
1475
></LI
 
1476
></UL
 
1477
></DIV
 
1478
><DIV
 
1479
CLASS="SECT3"
 
1480
><H3
 
1481
CLASS="SECT3"
 
1482
><A
 
1483
NAME="AEN116700"
 
1484
>E.53.3.3. Query Changes</A
 
1485
></H3
 
1486
><P
 
1487
></P
 
1488
><UL
 
1489
><LI
 
1490
><P
 
1491
>       Add <A
 
1492
HREF="sql-insert.html"
 
1493
><TT
 
1494
CLASS="COMMAND"
 
1495
>INSERT</TT
 
1496
></A
 
1497
>/<A
 
1498
HREF="sql-update.html"
 
1499
><TT
 
1500
CLASS="COMMAND"
 
1501
>UPDATE</TT
 
1502
></A
 
1503
>/<A
 
1504
HREF="sql-delete.html"
 
1505
><TT
 
1506
CLASS="COMMAND"
 
1507
>DELETE</TT
 
1508
></A
 
1509
>
 
1510
       <TT
 
1511
CLASS="LITERAL"
 
1512
>RETURNING</TT
 
1513
> (Jonah Harris, Tom)
 
1514
      </P
 
1515
><P
 
1516
>       This allows these commands to return values, such as the
 
1517
       computed serial key for a new row.  In the <TT
 
1518
CLASS="COMMAND"
 
1519
>UPDATE</TT
 
1520
>
 
1521
       case, values from the updated version of the row are returned.
 
1522
      </P
 
1523
></LI
 
1524
><LI
 
1525
><P
 
1526
>       Add support for multiple-row <A
 
1527
HREF="queries-values.html"
 
1528
><TT
 
1529
CLASS="LITERAL"
 
1530
>VALUES</TT
 
1531
></A
 
1532
> clauses,
 
1533
       per SQL standard (Joe, Tom)
 
1534
      </P
 
1535
><P
 
1536
>       This allows <TT
 
1537
CLASS="COMMAND"
 
1538
>INSERT</TT
 
1539
> to insert multiple rows of
 
1540
       constants, or queries to generate result sets using constants.
 
1541
       For example, <TT
 
1542
CLASS="LITERAL"
 
1543
>INSERT ...  VALUES (...), (...),
 
1544
       ....</TT
 
1545
>, and <TT
 
1546
CLASS="LITERAL"
 
1547
>SELECT * FROM (VALUES (...), (...),
 
1548
       ....) AS alias(f1, ...)</TT
 
1549
>.
 
1550
      </P
 
1551
></LI
 
1552
><LI
 
1553
><P
 
1554
>       Allow <A
 
1555
HREF="sql-update.html"
 
1556
><TT
 
1557
CLASS="COMMAND"
 
1558
>UPDATE</TT
 
1559
></A
 
1560
>
 
1561
       and <A
 
1562
HREF="sql-delete.html"
 
1563
><TT
 
1564
CLASS="COMMAND"
 
1565
>DELETE</TT
 
1566
></A
 
1567
>
 
1568
       to use an alias for the target table (Atsushi Ogawa)
 
1569
      </P
 
1570
><P
 
1571
>       The SQL standard does not permit an alias in these commands, but
 
1572
       many database systems allow one anyway for notational convenience.
 
1573
      </P
 
1574
></LI
 
1575
><LI
 
1576
><P
 
1577
>       Allow <A
 
1578
HREF="sql-update.html"
 
1579
><TT
 
1580
CLASS="COMMAND"
 
1581
>UPDATE</TT
 
1582
></A
 
1583
>
 
1584
       to set multiple columns with a list of values (Susanne
 
1585
       Ebrecht)
 
1586
      </P
 
1587
><P
 
1588
>       This is basically a short-hand for assigning the columns
 
1589
       and values in pairs.  The syntax is <TT
 
1590
CLASS="LITERAL"
 
1591
>UPDATE tab
 
1592
       SET (<TT
 
1593
CLASS="REPLACEABLE"
 
1594
><I
 
1595
>column</I
 
1596
></TT
 
1597
>, ...) = (<TT
 
1598
CLASS="REPLACEABLE"
 
1599
><I
 
1600
>val</I
 
1601
></TT
 
1602
>, ...)</TT
 
1603
>.
 
1604
      </P
 
1605
></LI
 
1606
><LI
 
1607
><P
 
1608
>       Make row comparisons work per standard (Tom)
 
1609
      </P
 
1610
><P
 
1611
>       The forms &lt;, &lt;=, &gt;, &gt;= now compare rows lexicographically,
 
1612
       that is, compare the first elements, if equal compare the second
 
1613
       elements, and so on.  Formerly they expanded to an AND condition
 
1614
       across all the elements, which was neither standard nor very useful.
 
1615
      </P
 
1616
></LI
 
1617
><LI
 
1618
><P
 
1619
>       Add <A
 
1620
HREF="sql-truncate.html"
 
1621
><TT
 
1622
CLASS="LITERAL"
 
1623
>CASCADE</TT
 
1624
></A
 
1625
>
 
1626
       option to <TT
 
1627
CLASS="COMMAND"
 
1628
>TRUNCATE</TT
 
1629
> (Joachim Wieland)
 
1630
      </P
 
1631
><P
 
1632
>       This causes <TT
 
1633
CLASS="COMMAND"
 
1634
>TRUNCATE</TT
 
1635
> to automatically include all tables
 
1636
       that reference the specified table(s) via foreign keys.  While
 
1637
       convenient, this is a dangerous tool &mdash; use with caution!
 
1638
      </P
 
1639
></LI
 
1640
><LI
 
1641
><P
 
1642
>       Support <TT
 
1643
CLASS="LITERAL"
 
1644
>FOR UPDATE</TT
 
1645
> and <TT
 
1646
CLASS="LITERAL"
 
1647
>FOR SHARE</TT
 
1648
>
 
1649
       in the same <A
 
1650
HREF="sql-insert.html"
 
1651
><TT
 
1652
CLASS="LITERAL"
 
1653
>SELECT</TT
 
1654
></A
 
1655
>
 
1656
       command (Tom)
 
1657
      </P
 
1658
></LI
 
1659
><LI
 
1660
><P
 
1661
>       Add <A
 
1662
HREF="functions-comparisons.html"
 
1663
><TT
 
1664
CLASS="LITERAL"
 
1665
>IS NOT
 
1666
       DISTINCT FROM</TT
 
1667
></A
 
1668
> (Pavel Stehule)
 
1669
      </P
 
1670
><P
 
1671
>       This operator is similar to equality (<TT
 
1672
CLASS="LITERAL"
 
1673
>=</TT
 
1674
>), but
 
1675
       evaluates to true when both left and right operands are
 
1676
       <TT
 
1677
CLASS="LITERAL"
 
1678
>NULL</TT
 
1679
>, and to false when just one is, rather than
 
1680
       yielding <TT
 
1681
CLASS="LITERAL"
 
1682
>NULL</TT
 
1683
> in these cases.
 
1684
      </P
 
1685
></LI
 
1686
><LI
 
1687
><P
 
1688
>       Improve the length output used by <A
 
1689
HREF="queries-union.html"
 
1690
><TT
 
1691
CLASS="LITERAL"
 
1692
>UNION</TT
 
1693
></A
 
1694
>/<TT
 
1695
CLASS="LITERAL"
 
1696
>INTERSECT</TT
 
1697
>/<TT
 
1698
CLASS="LITERAL"
 
1699
>EXCEPT</TT
 
1700
>
 
1701
       (Tom)
 
1702
      </P
 
1703
><P
 
1704
>       When all corresponding columns are of the same defined length, that
 
1705
       length is used for the result, rather than a generic length.
 
1706
      </P
 
1707
></LI
 
1708
><LI
 
1709
><P
 
1710
>       Allow <A
 
1711
HREF="functions-matching.html#FUNCTIONS-LIKE"
 
1712
><TT
 
1713
CLASS="LITERAL"
 
1714
>ILIKE</TT
 
1715
></A
 
1716
>
 
1717
       to work for multi-byte encodings (Tom)
 
1718
      </P
 
1719
><P
 
1720
>       Internally, <TT
 
1721
CLASS="LITERAL"
 
1722
>ILIKE</TT
 
1723
> now calls <CODE
 
1724
CLASS="FUNCTION"
 
1725
>lower()</CODE
 
1726
>
 
1727
       and then uses <TT
 
1728
CLASS="LITERAL"
 
1729
>LIKE</TT
 
1730
>.  Locale-specific regular
 
1731
       expression patterns still do not work in these encodings.
 
1732
      </P
 
1733
></LI
 
1734
><LI
 
1735
><P
 
1736
>       Enable <A
 
1737
HREF="runtime-config-compatible.html#GUC-STANDARD-CONFORMING-STRINGS"
 
1738
><TT
 
1739
CLASS="VARNAME"
 
1740
>standard_conforming_strings</TT
 
1741
></A
 
1742
>
 
1743
       to be turned <TT
 
1744
CLASS="LITERAL"
 
1745
>on</TT
 
1746
> (Kevin Grittner)
 
1747
      </P
 
1748
><P
 
1749
>       This allows backslash escaping in strings to be disabled,
 
1750
       making <SPAN
 
1751
CLASS="PRODUCTNAME"
 
1752
>PostgreSQL</SPAN
 
1753
> more
 
1754
       standards-compliant.  The default is <TT
 
1755
CLASS="LITERAL"
 
1756
>off</TT
 
1757
> for backwards
 
1758
       compatibility, but future releases will default this to <TT
 
1759
CLASS="LITERAL"
 
1760
>on</TT
 
1761
>.
 
1762
      </P
 
1763
></LI
 
1764
><LI
 
1765
><P
 
1766
>       Do not flatten subqueries that contain <TT
 
1767
CLASS="LITERAL"
 
1768
>volatile</TT
 
1769
>
 
1770
       functions in their target lists (Jaime Casanova)
 
1771
      </P
 
1772
><P
 
1773
>       This prevents surprising behavior due to multiple evaluation
 
1774
       of a <TT
 
1775
CLASS="LITERAL"
 
1776
>volatile</TT
 
1777
> function (such as <CODE
 
1778
CLASS="FUNCTION"
 
1779
>random()</CODE
 
1780
>
 
1781
       or <CODE
 
1782
CLASS="FUNCTION"
 
1783
>nextval()</CODE
 
1784
>).  It might cause performance
 
1785
       degradation in the presence of functions that are unnecessarily
 
1786
       marked as <TT
 
1787
CLASS="LITERAL"
 
1788
>volatile</TT
 
1789
>.
 
1790
      </P
 
1791
></LI
 
1792
><LI
 
1793
><P
 
1794
>       Add system views <A
 
1795
HREF="view-pg-prepared-statements.html"
 
1796
><TT
 
1797
CLASS="LITERAL"
 
1798
>pg_prepared_statements</TT
 
1799
></A
 
1800
>
 
1801
       and <A
 
1802
HREF="view-pg-cursors.html"
 
1803
><TT
 
1804
CLASS="LITERAL"
 
1805
>pg_cursors</TT
 
1806
></A
 
1807
>
 
1808
       to show prepared statements and open cursors (Joachim Wieland, Neil)
 
1809
      </P
 
1810
><P
 
1811
>       These are very useful in pooled connection setups.
 
1812
      </P
 
1813
></LI
 
1814
><LI
 
1815
><P
 
1816
>       Support portal parameters in <A
 
1817
HREF="sql-explain.html"
 
1818
><TT
 
1819
CLASS="COMMAND"
 
1820
>EXPLAIN</TT
 
1821
></A
 
1822
> and <A
 
1823
HREF="sql-execute.html"
 
1824
><TT
 
1825
CLASS="COMMAND"
 
1826
>EXECUTE</TT
 
1827
></A
 
1828
> (Tom)
 
1829
      </P
 
1830
><P
 
1831
>       This allows, for example, <ACRONYM
 
1832
CLASS="ACRONYM"
 
1833
>JDBC</ACRONYM
 
1834
> <TT
 
1835
CLASS="LITERAL"
 
1836
>?</TT
 
1837
> parameters to
 
1838
       work in these commands.
 
1839
      </P
 
1840
></LI
 
1841
><LI
 
1842
><P
 
1843
>       If <ACRONYM
 
1844
CLASS="ACRONYM"
 
1845
>SQL</ACRONYM
 
1846
>-level <A
 
1847
HREF="sql-prepare.html"
 
1848
><TT
 
1849
CLASS="COMMAND"
 
1850
>PREPARE</TT
 
1851
></A
 
1852
> parameters
 
1853
       are unspecified, infer their types from the content of the
 
1854
       query (Neil)
 
1855
      </P
 
1856
><P
 
1857
>       Protocol-level <TT
 
1858
CLASS="COMMAND"
 
1859
>PREPARE</TT
 
1860
> already did this.
 
1861
      </P
 
1862
></LI
 
1863
><LI
 
1864
><P
 
1865
>       Allow <TT
 
1866
CLASS="LITERAL"
 
1867
>LIMIT</TT
 
1868
> and <TT
 
1869
CLASS="LITERAL"
 
1870
>OFFSET</TT
 
1871
> to exceed
 
1872
       two billion (Dhanaraj M)
 
1873
      </P
 
1874
></LI
 
1875
></UL
 
1876
></DIV
 
1877
><DIV
 
1878
CLASS="SECT3"
 
1879
><H3
 
1880
CLASS="SECT3"
 
1881
><A
 
1882
NAME="AEN116820"
 
1883
>E.53.3.4. Object Manipulation Changes</A
 
1884
></H3
 
1885
><P
 
1886
></P
 
1887
><UL
 
1888
><LI
 
1889
><P
 
1890
>       Add <TT
 
1891
CLASS="LITERAL"
 
1892
>TABLESPACE</TT
 
1893
> clause to <A
 
1894
HREF="sql-createtableas.html"
 
1895
><TT
 
1896
CLASS="COMMAND"
 
1897
>CREATE TABLE AS</TT
 
1898
></A
 
1899
>
 
1900
       (Neil)
 
1901
      </P
 
1902
><P
 
1903
>       This allows a tablespace to be specified for the new table.
 
1904
      </P
 
1905
></LI
 
1906
><LI
 
1907
><P
 
1908
>       Add <TT
 
1909
CLASS="LITERAL"
 
1910
>ON COMMIT</TT
 
1911
> clause to <A
 
1912
HREF="sql-createtableas.html"
 
1913
><TT
 
1914
CLASS="COMMAND"
 
1915
>CREATE TABLE AS</TT
 
1916
></A
 
1917
>
 
1918
       (Neil)
 
1919
      </P
 
1920
><P
 
1921
>       This allows temporary tables to be truncated or dropped on
 
1922
       transaction commit.  The default behavior is for the table
 
1923
       to remain until the session ends.
 
1924
      </P
 
1925
></LI
 
1926
><LI
 
1927
><P
 
1928
>       Add <TT
 
1929
CLASS="LITERAL"
 
1930
>INCLUDING CONSTRAINTS</TT
 
1931
> to <A
 
1932
HREF="sql-createtable.html"
 
1933
><TT
 
1934
CLASS="COMMAND"
 
1935
>CREATE TABLE LIKE</TT
 
1936
></A
 
1937
>
 
1938
       (Greg Stark)
 
1939
      </P
 
1940
><P
 
1941
>       This allows easy copying of <TT
 
1942
CLASS="LITERAL"
 
1943
>CHECK</TT
 
1944
> constraints to a new
 
1945
       table.
 
1946
      </P
 
1947
></LI
 
1948
><LI
 
1949
><P
 
1950
>       Allow the creation of placeholder (shell) <A
 
1951
HREF="sql-createtype.html"
 
1952
>types</A
 
1953
> (Martijn van Oosterhout)
 
1954
      </P
 
1955
><P
 
1956
>       A shell type declaration creates a type name, without specifying
 
1957
       any of the details of the type.  Making a shell type is useful
 
1958
       because it allows cleaner declaration of the type's input/output
 
1959
       functions, which must exist before the type can be defined <SPAN
 
1960
CLASS="QUOTE"
 
1961
>"for
 
1962
       real"</SPAN
 
1963
>.  The syntax is <TT
 
1964
CLASS="COMMAND"
 
1965
>CREATE TYPE <TT
 
1966
CLASS="REPLACEABLE"
 
1967
><I
 
1968
>typename</I
 
1969
></TT
 
1970
></TT
 
1971
>.
 
1972
      </P
 
1973
></LI
 
1974
><LI
 
1975
><P
 
1976
>       <A
 
1977
HREF="sql-createaggregate.html"
 
1978
>Aggregate functions</A
 
1979
>
 
1980
       now support multiple input parameters (Sergey Koposov, Tom)
 
1981
      </P
 
1982
></LI
 
1983
><LI
 
1984
><P
 
1985
>       Add new aggregate creation <A
 
1986
HREF="sql-createaggregate.html"
 
1987
>syntax</A
 
1988
> (Tom)
 
1989
      </P
 
1990
><P
 
1991
>       The new syntax is <TT
 
1992
CLASS="COMMAND"
 
1993
>CREATE AGGREGATE
 
1994
       <TT
 
1995
CLASS="REPLACEABLE"
 
1996
><I
 
1997
>aggname</I
 
1998
></TT
 
1999
> (<TT
 
2000
CLASS="REPLACEABLE"
 
2001
><I
 
2002
>input_type</I
 
2003
></TT
 
2004
>)
 
2005
       (<TT
 
2006
CLASS="REPLACEABLE"
 
2007
><I
 
2008
>parameter_list</I
 
2009
></TT
 
2010
>)</TT
 
2011
>.  This more
 
2012
       naturally supports the new multi-parameter aggregate
 
2013
       functionality.  The previous syntax is still supported.
 
2014
      </P
 
2015
></LI
 
2016
><LI
 
2017
><P
 
2018
>       Add <A
 
2019
HREF="sql-alterrole.html"
 
2020
><TT
 
2021
CLASS="COMMAND"
 
2022
>ALTER ROLE PASSWORD NULL</TT
 
2023
></A
 
2024
>
 
2025
       to remove a previously set role password (Peter)
 
2026
      </P
 
2027
></LI
 
2028
><LI
 
2029
><P
 
2030
>       Add <TT
 
2031
CLASS="COMMAND"
 
2032
>DROP</TT
 
2033
> object <TT
 
2034
CLASS="LITERAL"
 
2035
>IF EXISTS</TT
 
2036
> for many
 
2037
       object types (Andrew)
 
2038
      </P
 
2039
><P
 
2040
>       This allows <TT
 
2041
CLASS="COMMAND"
 
2042
>DROP</TT
 
2043
> operations on non-existent
 
2044
       objects without generating an error.
 
2045
      </P
 
2046
></LI
 
2047
><LI
 
2048
><P
 
2049
>       Add <A
 
2050
HREF="sql-drop-owned.html"
 
2051
><TT
 
2052
CLASS="LITERAL"
 
2053
>DROP OWNED</TT
 
2054
></A
 
2055
>
 
2056
       to drop all objects owned by a role (Alvaro)
 
2057
      </P
 
2058
></LI
 
2059
><LI
 
2060
><P
 
2061
>       Add <A
 
2062
HREF="sql-reassign-owned.html"
 
2063
><TT
 
2064
CLASS="LITERAL"
 
2065
>REASSIGN
 
2066
       OWNED</TT
 
2067
></A
 
2068
> to reassign ownership of all objects owned
 
2069
       by a role (Alvaro)
 
2070
      </P
 
2071
><P
 
2072
>       This, and <TT
 
2073
CLASS="LITERAL"
 
2074
>DROP OWNED</TT
 
2075
> above, facilitate dropping
 
2076
       roles.
 
2077
      </P
 
2078
></LI
 
2079
><LI
 
2080
><P
 
2081
>       Add <A
 
2082
HREF="sql-grant.html"
 
2083
><TT
 
2084
CLASS="COMMAND"
 
2085
>GRANT ON SEQUENCE</TT
 
2086
></A
 
2087
>
 
2088
       syntax (Bruce)
 
2089
      </P
 
2090
><P
 
2091
>       This was added for setting sequence-specific permissions.
 
2092
       <TT
 
2093
CLASS="LITERAL"
 
2094
>GRANT ON TABLE</TT
 
2095
> for sequences is still supported
 
2096
       for backward compatibility.
 
2097
      </P
 
2098
></LI
 
2099
><LI
 
2100
><P
 
2101
>       Add <A
 
2102
HREF="sql-grant.html"
 
2103
><TT
 
2104
CLASS="LITERAL"
 
2105
>USAGE</TT
 
2106
></A
 
2107
>
 
2108
       permission for sequences that allows only <CODE
 
2109
CLASS="FUNCTION"
 
2110
>currval()</CODE
 
2111
>
 
2112
       and <CODE
 
2113
CLASS="FUNCTION"
 
2114
>nextval()</CODE
 
2115
>, not <CODE
 
2116
CLASS="FUNCTION"
 
2117
>setval()</CODE
 
2118
>
 
2119
       (Bruce)
 
2120
      </P
 
2121
><P
 
2122
>       <TT
 
2123
CLASS="LITERAL"
 
2124
>USAGE</TT
 
2125
> permission allows more fine-grained
 
2126
       control over sequence access.  Granting <TT
 
2127
CLASS="LITERAL"
 
2128
>USAGE</TT
 
2129
>
 
2130
       allows users to increment
 
2131
       a sequence, but prevents them from setting the sequence to
 
2132
       an arbitrary value using <CODE
 
2133
CLASS="FUNCTION"
 
2134
>setval()</CODE
 
2135
>.
 
2136
      </P
 
2137
></LI
 
2138
><LI
 
2139
><P
 
2140
>       Add <A
 
2141
HREF="sql-altertable.html"
 
2142
><TT
 
2143
CLASS="LITERAL"
 
2144
>ALTER TABLE
 
2145
       [ NO ] INHERIT</TT
 
2146
></A
 
2147
> (Greg Stark)
 
2148
      </P
 
2149
><P
 
2150
>       This allows inheritance to be adjusted dynamically, rather than
 
2151
       just at table creation and destruction.  This is very valuable
 
2152
       when using inheritance to implement table partitioning.
 
2153
      </P
 
2154
></LI
 
2155
><LI
 
2156
><P
 
2157
>       Allow <A
 
2158
HREF="sql-comment.html"
 
2159
>comments</A
 
2160
> on global
 
2161
       objects to be stored globally (Kris Jurka)
 
2162
      </P
 
2163
><P
 
2164
>       Previously, comments attached to databases were stored in individual
 
2165
       databases, making them ineffective, and there was no provision
 
2166
       at all for comments on roles or tablespaces.  This change adds a new
 
2167
       shared catalog <A
 
2168
HREF="catalog-pg-shdescription.html"
 
2169
><TT
 
2170
CLASS="STRUCTNAME"
 
2171
>pg_shdescription</TT
 
2172
></A
 
2173
>
 
2174
       and stores comments on databases, roles, and tablespaces therein.
 
2175
      </P
 
2176
></LI
 
2177
></UL
 
2178
></DIV
 
2179
><DIV
 
2180
CLASS="SECT3"
 
2181
><H3
 
2182
CLASS="SECT3"
 
2183
><A
 
2184
NAME="AEN116908"
 
2185
>E.53.3.5. Utility Command Changes</A
 
2186
></H3
 
2187
><P
 
2188
></P
 
2189
><UL
 
2190
><LI
 
2191
><P
 
2192
>       Add option to allow indexes to be created without blocking
 
2193
       concurrent writes to the table (Greg Stark, Tom)
 
2194
      </P
 
2195
><P
 
2196
>       The new syntax is <A
 
2197
HREF="sql-createindex.html"
 
2198
><TT
 
2199
CLASS="COMMAND"
 
2200
>CREATE
 
2201
       INDEX CONCURRENTLY</TT
 
2202
></A
 
2203
>.  The default behavior is
 
2204
       still to block table modification while a index is being
 
2205
       created.
 
2206
      </P
 
2207
></LI
 
2208
><LI
 
2209
><P
 
2210
>       Provide <A
 
2211
HREF="functions-admin.html#FUNCTIONS-ADVISORY-LOCKS"
 
2212
>advisory
 
2213
       locking</A
 
2214
> functionality (Abhijit Menon-Sen, Tom)
 
2215
      </P
 
2216
><P
 
2217
>       This is a new locking API designed to replace what used to be
 
2218
       in /contrib/userlock.  The userlock code is now on pgfoundry.
 
2219
      </P
 
2220
></LI
 
2221
><LI
 
2222
><P
 
2223
>       Allow <A
 
2224
HREF="sql-copy.html"
 
2225
><TT
 
2226
CLASS="COMMAND"
 
2227
>COPY</TT
 
2228
></A
 
2229
> to
 
2230
       dump a <TT
 
2231
CLASS="COMMAND"
 
2232
>SELECT</TT
 
2233
> query (Zoltan Boszormenyi, Karel
 
2234
       Zak)
 
2235
      </P
 
2236
><P
 
2237
>       This allows <TT
 
2238
CLASS="COMMAND"
 
2239
>COPY</TT
 
2240
> to dump arbitrary <ACRONYM
 
2241
CLASS="ACRONYM"
 
2242
>SQL</ACRONYM
 
2243
>
 
2244
       queries. The syntax is <TT
 
2245
CLASS="LITERAL"
 
2246
>COPY (SELECT ...) TO</TT
 
2247
>.
 
2248
      </P
 
2249
></LI
 
2250
><LI
 
2251
><P
 
2252
>       Make the <A
 
2253
HREF="sql-copy.html"
 
2254
><TT
 
2255
CLASS="COMMAND"
 
2256
>COPY</TT
 
2257
></A
 
2258
>
 
2259
       command return a command tag that includes the number of
 
2260
       rows copied (Volkan YAZICI)
 
2261
      </P
 
2262
></LI
 
2263
><LI
 
2264
><P
 
2265
>       Allow <A
 
2266
HREF="sql-vacuum.html"
 
2267
><TT
 
2268
CLASS="COMMAND"
 
2269
>VACUUM</TT
 
2270
></A
 
2271
>
 
2272
       to expire rows without being affected by other concurrent
 
2273
       <TT
 
2274
CLASS="COMMAND"
 
2275
>VACUUM</TT
 
2276
> operations (Hannu Krossing, Alvaro, Tom)
 
2277
      </P
 
2278
></LI
 
2279
><LI
 
2280
><P
 
2281
>       Make <A
 
2282
HREF="app-initdb.html"
 
2283
><SPAN
 
2284
CLASS="APPLICATION"
 
2285
>initdb</SPAN
 
2286
></A
 
2287
>
 
2288
       detect the operating system locale and set the default
 
2289
       <TT
 
2290
CLASS="VARNAME"
 
2291
>DateStyle</TT
 
2292
> accordingly (Peter)
 
2293
      </P
 
2294
><P
 
2295
>       This makes it more likely that the installed
 
2296
       <TT
 
2297
CLASS="FILENAME"
 
2298
>postgresql.conf</TT
 
2299
> <TT
 
2300
CLASS="VARNAME"
 
2301
>DateStyle</TT
 
2302
> value will
 
2303
       be as desired.
 
2304
      </P
 
2305
></LI
 
2306
><LI
 
2307
><P
 
2308
>       Reduce number of progress messages displayed by <SPAN
 
2309
CLASS="APPLICATION"
 
2310
>initdb</SPAN
 
2311
> (Tom)
 
2312
      </P
 
2313
></LI
 
2314
></UL
 
2315
></DIV
 
2316
><DIV
 
2317
CLASS="SECT3"
 
2318
><H3
 
2319
CLASS="SECT3"
 
2320
><A
 
2321
NAME="AEN116949"
 
2322
>E.53.3.6. Date/Time Changes</A
 
2323
></H3
 
2324
><P
 
2325
></P
 
2326
><UL
 
2327
><LI
 
2328
><P
 
2329
>       Allow full timezone names in <A
 
2330
HREF="datatype-datetime.html"
 
2331
><TT
 
2332
CLASS="TYPE"
 
2333
>timestamp</TT
 
2334
></A
 
2335
> input values
 
2336
       (Joachim Wieland)
 
2337
      </P
 
2338
><P
 
2339
>       For example, <TT
 
2340
CLASS="LITERAL"
 
2341
>'2006-05-24 21:11
 
2342
       America/New_York'::timestamptz</TT
 
2343
>.
 
2344
      </P
 
2345
></LI
 
2346
><LI
 
2347
><P
 
2348
>       Support configurable timezone abbreviations (Joachim Wieland)
 
2349
      </P
 
2350
><P
 
2351
>       A desired set of timezone abbreviations can be chosen via the
 
2352
       configuration parameter <A
 
2353
HREF="runtime-config-client.html#GUC-TIMEZONE-ABBREVIATIONS"
 
2354
><TT
 
2355
CLASS="VARNAME"
 
2356
>timezone_abbreviations</TT
 
2357
></A
 
2358
>.
 
2359
      </P
 
2360
></LI
 
2361
><LI
 
2362
><P
 
2363
>       Add <A
 
2364
HREF="view-pg-timezone-abbrevs.html"
 
2365
><TT
 
2366
CLASS="VARNAME"
 
2367
>pg_timezone_abbrevs</TT
 
2368
></A
 
2369
>
 
2370
       and <A
 
2371
HREF="view-pg-timezone-names.html"
 
2372
><TT
 
2373
CLASS="VARNAME"
 
2374
>pg_timezone_names</TT
 
2375
></A
 
2376
>
 
2377
       views to show supported timezones (Magnus Hagander)
 
2378
      </P
 
2379
></LI
 
2380
><LI
 
2381
><P
 
2382
>       Add <A
 
2383
HREF="functions-datetime.html#FUNCTIONS-DATETIME-TABLE"
 
2384
><CODE
 
2385
CLASS="FUNCTION"
 
2386
>clock_timestamp()</CODE
 
2387
></A
 
2388
>,
 
2389
       <A
 
2390
HREF="functions-datetime.html#FUNCTIONS-DATETIME-TABLE"
 
2391
><CODE
 
2392
CLASS="FUNCTION"
 
2393
>statement_timestamp()</CODE
 
2394
></A
 
2395
>,
 
2396
       and <A
 
2397
HREF="functions-datetime.html#FUNCTIONS-DATETIME-TABLE"
 
2398
><CODE
 
2399
CLASS="FUNCTION"
 
2400
>transaction_timestamp()</CODE
 
2401
></A
 
2402
>
 
2403
       (Bruce)
 
2404
      </P
 
2405
><P
 
2406
>       <CODE
 
2407
CLASS="FUNCTION"
 
2408
>clock_timestamp()</CODE
 
2409
> is the current wall-clock time,
 
2410
       <CODE
 
2411
CLASS="FUNCTION"
 
2412
>statement_timestamp()</CODE
 
2413
> is the time the current
 
2414
       statement arrived at the server, and
 
2415
       <CODE
 
2416
CLASS="FUNCTION"
 
2417
>transaction_timestamp()</CODE
 
2418
> is an alias for
 
2419
       <CODE
 
2420
CLASS="FUNCTION"
 
2421
>now()</CODE
 
2422
>.
 
2423
      </P
 
2424
></LI
 
2425
><LI
 
2426
><P
 
2427
>       Allow <A
 
2428
HREF="functions-formatting.html"
 
2429
><CODE
 
2430
CLASS="FUNCTION"
 
2431
>to_char()</CODE
 
2432
></A
 
2433
>
 
2434
       to print localized month and day names (Euler Taveira de
 
2435
       Oliveira)
 
2436
      </P
 
2437
></LI
 
2438
><LI
 
2439
><P
 
2440
>       Allow <A
 
2441
HREF="functions-formatting.html"
 
2442
><CODE
 
2443
CLASS="FUNCTION"
 
2444
>to_char(time)</CODE
 
2445
></A
 
2446
>
 
2447
       and <A
 
2448
HREF="functions-formatting.html"
 
2449
><CODE
 
2450
CLASS="FUNCTION"
 
2451
>to_char(interval)</CODE
 
2452
></A
 
2453
>
 
2454
       to output <ACRONYM
 
2455
CLASS="ACRONYM"
 
2456
>AM</ACRONYM
 
2457
>/<ACRONYM
 
2458
CLASS="ACRONYM"
 
2459
>PM</ACRONYM
 
2460
> specifications
 
2461
       (Bruce)
 
2462
      </P
 
2463
><P
 
2464
>       Intervals and times are treated as 24-hour periods, e.g.
 
2465
       <TT
 
2466
CLASS="LITERAL"
 
2467
>25 hours</TT
 
2468
> is considered <ACRONYM
 
2469
CLASS="ACRONYM"
 
2470
>AM</ACRONYM
 
2471
>.
 
2472
      </P
 
2473
></LI
 
2474
><LI
 
2475
><P
 
2476
>       Add new function <A
 
2477
HREF="functions-datetime.html#FUNCTIONS-DATETIME-TABLE"
 
2478
><CODE
 
2479
CLASS="FUNCTION"
 
2480
>justify_interval()</CODE
 
2481
></A
 
2482
>
 
2483
       to adjust interval units (Mark Dilger)
 
2484
      </P
 
2485
></LI
 
2486
><LI
 
2487
><P
 
2488
>       Allow timezone offsets up to 14:59 away from GMT
 
2489
      </P
 
2490
><P
 
2491
>       Kiribati uses GMT+14, so we'd better accept that.
 
2492
      </P
 
2493
></LI
 
2494
><LI
 
2495
><P
 
2496
>       Interval computation improvements (Michael Glaesemann, Bruce)
 
2497
      </P
 
2498
></LI
 
2499
></UL
 
2500
></DIV
 
2501
><DIV
 
2502
CLASS="SECT3"
 
2503
><H3
 
2504
CLASS="SECT3"
 
2505
><A
 
2506
NAME="AEN117006"
 
2507
>E.53.3.7. Other Data Type and Function Changes</A
 
2508
></H3
 
2509
><P
 
2510
></P
 
2511
><UL
 
2512
><LI
 
2513
><P
 
2514
>       Allow arrays to contain <TT
 
2515
CLASS="LITERAL"
 
2516
>NULL</TT
 
2517
> elements (Tom)
 
2518
      </P
 
2519
></LI
 
2520
><LI
 
2521
><P
 
2522
>       Allow assignment to array elements not contiguous with the existing
 
2523
       entries (Tom)
 
2524
      </P
 
2525
><P
 
2526
>       The intervening array positions will be filled with nulls.
 
2527
       This is per SQL standard.
 
2528
      </P
 
2529
></LI
 
2530
><LI
 
2531
><P
 
2532
>       New built-in <A
 
2533
HREF="functions-array.html"
 
2534
>operators</A
 
2535
>
 
2536
       for array-subset comparisons (<TT
 
2537
CLASS="LITERAL"
 
2538
>@&gt;</TT
 
2539
>,
 
2540
       <TT
 
2541
CLASS="LITERAL"
 
2542
>&lt;@</TT
 
2543
>, <TT
 
2544
CLASS="LITERAL"
 
2545
>&amp;&amp;</TT
 
2546
>) (Teodor, Tom)
 
2547
      </P
 
2548
><P
 
2549
>       These operators can be indexed for many data types using
 
2550
       <ACRONYM
 
2551
CLASS="ACRONYM"
 
2552
>GiST</ACRONYM
 
2553
> or <ACRONYM
 
2554
CLASS="ACRONYM"
 
2555
>GIN</ACRONYM
 
2556
> indexes.
 
2557
      </P
 
2558
></LI
 
2559
><LI
 
2560
><P
 
2561
>       Add convenient arithmetic <A
 
2562
HREF="functions-net.html#CIDR-INET-OPERATORS-TABLE"
 
2563
>operations</A
 
2564
> on
 
2565
       <TT
 
2566
CLASS="TYPE"
 
2567
>INET</TT
 
2568
>/<TT
 
2569
CLASS="TYPE"
 
2570
>CIDR</TT
 
2571
> values (Stephen R. van den
 
2572
       Berg)
 
2573
      </P
 
2574
><P
 
2575
>       The new operators are <TT
 
2576
CLASS="LITERAL"
 
2577
>&amp;</TT
 
2578
> (and), <TT
 
2579
CLASS="LITERAL"
 
2580
>|</TT
 
2581
>
 
2582
       (or), <TT
 
2583
CLASS="LITERAL"
 
2584
>~</TT
 
2585
> (not), <TT
 
2586
CLASS="TYPE"
 
2587
>inet</TT
 
2588
> <TT
 
2589
CLASS="LITERAL"
 
2590
>+</TT
 
2591
> <TT
 
2592
CLASS="TYPE"
 
2593
>int8</TT
 
2594
>,
 
2595
       <TT
 
2596
CLASS="TYPE"
 
2597
>inet</TT
 
2598
> <TT
 
2599
CLASS="LITERAL"
 
2600
>-</TT
 
2601
> <TT
 
2602
CLASS="TYPE"
 
2603
>int8</TT
 
2604
>, and
 
2605
       <TT
 
2606
CLASS="TYPE"
 
2607
>inet</TT
 
2608
> <TT
 
2609
CLASS="LITERAL"
 
2610
>-</TT
 
2611
> <TT
 
2612
CLASS="TYPE"
 
2613
>inet</TT
 
2614
>.
 
2615
      </P
 
2616
></LI
 
2617
><LI
 
2618
><P
 
2619
>       Add new <A
 
2620
HREF="functions-aggregate.html#FUNCTIONS-AGGREGATE-STATISTICS-TABLE"
 
2621
>aggregate functions</A
 
2622
>
 
2623
       from SQL:2003 (Neil)
 
2624
      </P
 
2625
><P
 
2626
>       The new functions are <CODE
 
2627
CLASS="FUNCTION"
 
2628
>var_pop()</CODE
 
2629
>,
 
2630
       <CODE
 
2631
CLASS="FUNCTION"
 
2632
>var_samp()</CODE
 
2633
>, <CODE
 
2634
CLASS="FUNCTION"
 
2635
>stddev_pop()</CODE
 
2636
>, and
 
2637
       <CODE
 
2638
CLASS="FUNCTION"
 
2639
>stddev_samp()</CODE
 
2640
>.  <CODE
 
2641
CLASS="FUNCTION"
 
2642
>var_samp()</CODE
 
2643
> and
 
2644
       <CODE
 
2645
CLASS="FUNCTION"
 
2646
>stddev_samp()</CODE
 
2647
> are merely renamings of the
 
2648
       existing aggregates <CODE
 
2649
CLASS="FUNCTION"
 
2650
>variance()</CODE
 
2651
> and
 
2652
       <CODE
 
2653
CLASS="FUNCTION"
 
2654
>stddev()</CODE
 
2655
>.  The latter names remain available
 
2656
       for backward compatibility.
 
2657
      </P
 
2658
></LI
 
2659
><LI
 
2660
><P
 
2661
>       Add SQL:2003 statistical <A
 
2662
HREF="functions-aggregate.html#FUNCTIONS-AGGREGATE-STATISTICS-TABLE"
 
2663
>aggregates</A
 
2664
>
 
2665
       (Sergey Koposov)
 
2666
      </P
 
2667
><P
 
2668
>       New functions:  <CODE
 
2669
CLASS="FUNCTION"
 
2670
>regr_intercept()</CODE
 
2671
>,
 
2672
       <CODE
 
2673
CLASS="FUNCTION"
 
2674
>regr_slope()</CODE
 
2675
>, <CODE
 
2676
CLASS="FUNCTION"
 
2677
>regr_r2()</CODE
 
2678
>,
 
2679
       <CODE
 
2680
CLASS="FUNCTION"
 
2681
>corr()</CODE
 
2682
>, <CODE
 
2683
CLASS="FUNCTION"
 
2684
>covar_samp()</CODE
 
2685
>,
 
2686
       <CODE
 
2687
CLASS="FUNCTION"
 
2688
>covar_pop()</CODE
 
2689
>, <CODE
 
2690
CLASS="FUNCTION"
 
2691
>regr_avgx()</CODE
 
2692
>,
 
2693
       <CODE
 
2694
CLASS="FUNCTION"
 
2695
>regr_avgy()</CODE
 
2696
>, <CODE
 
2697
CLASS="FUNCTION"
 
2698
>regr_sxy()</CODE
 
2699
>,
 
2700
       <CODE
 
2701
CLASS="FUNCTION"
 
2702
>regr_sxx()</CODE
 
2703
>, <CODE
 
2704
CLASS="FUNCTION"
 
2705
>regr_syy()</CODE
 
2706
>,
 
2707
       <CODE
 
2708
CLASS="FUNCTION"
 
2709
>regr_count()</CODE
 
2710
>.
 
2711
      </P
 
2712
></LI
 
2713
><LI
 
2714
><P
 
2715
>       Allow <A
 
2716
HREF="sql-createdomain.html"
 
2717
>domains</A
 
2718
> to be
 
2719
       based on other domains (Tom)
 
2720
      </P
 
2721
></LI
 
2722
><LI
 
2723
><P
 
2724
>       Properly enforce domain <A
 
2725
HREF="ddl-constraints.html"
 
2726
><TT
 
2727
CLASS="LITERAL"
 
2728
>CHECK</TT
 
2729
></A
 
2730
> constraints
 
2731
       everywhere (Neil, Tom)
 
2732
      </P
 
2733
><P
 
2734
>       For example, the result of a user-defined function that is
 
2735
       declared to return a domain type is now checked against the
 
2736
       domain's constraints. This closes a significant hole in the domain
 
2737
       implementation.
 
2738
      </P
 
2739
></LI
 
2740
><LI
 
2741
><P
 
2742
>       Fix problems with dumping renamed <A
 
2743
HREF="datatype-numeric.html#DATATYPE-SERIAL"
 
2744
><TT
 
2745
CLASS="TYPE"
 
2746
>SERIAL</TT
 
2747
></A
 
2748
> columns
 
2749
       (Tom)
 
2750
      </P
 
2751
><P
 
2752
>       The fix is to dump a <TT
 
2753
CLASS="TYPE"
 
2754
>SERIAL</TT
 
2755
> column by explicitly
 
2756
       specifying its <TT
 
2757
CLASS="LITERAL"
 
2758
>DEFAULT</TT
 
2759
> and sequence elements,
 
2760
       and reconstructing the <TT
 
2761
CLASS="TYPE"
 
2762
>SERIAL</TT
 
2763
> column on reload
 
2764
       using a new <A
 
2765
HREF="sql-altersequence.html"
 
2766
><TT
 
2767
CLASS="COMMAND"
 
2768
>ALTER
 
2769
       SEQUENCE OWNED BY</TT
 
2770
></A
 
2771
> command.  This also allows
 
2772
       dropping a <TT
 
2773
CLASS="TYPE"
 
2774
>SERIAL</TT
 
2775
> column specification.
 
2776
      </P
 
2777
></LI
 
2778
><LI
 
2779
><P
 
2780
>       Add a server-side sleep function <A
 
2781
HREF="functions-datetime.html#FUNCTIONS-DATETIME-DELAY"
 
2782
><CODE
 
2783
CLASS="FUNCTION"
 
2784
>pg_sleep()</CODE
 
2785
></A
 
2786
>
 
2787
       (Joachim Wieland)
 
2788
      </P
 
2789
></LI
 
2790
><LI
 
2791
><P
 
2792
>       Add all comparison operators for the <A
 
2793
HREF="datatype-oid.html"
 
2794
><TT
 
2795
CLASS="TYPE"
 
2796
>tid</TT
 
2797
></A
 
2798
> (tuple id) data
 
2799
       type (Mark Kirkwood, Greg Stark, Tom)
 
2800
      </P
 
2801
></LI
 
2802
></UL
 
2803
></DIV
 
2804
><DIV
 
2805
CLASS="SECT3"
 
2806
><H3
 
2807
CLASS="SECT3"
 
2808
><A
 
2809
NAME="AEN117097"
 
2810
>E.53.3.8. PL/pgSQL Server-Side Language Changes</A
 
2811
></H3
 
2812
><P
 
2813
></P
 
2814
><UL
 
2815
><LI
 
2816
><P
 
2817
>       Add <TT
 
2818
CLASS="LITERAL"
 
2819
>TG_table_name</TT
 
2820
> and <TT
 
2821
CLASS="LITERAL"
 
2822
>TG_table_schema</TT
 
2823
> to
 
2824
       trigger parameters (Andrew)
 
2825
      </P
 
2826
><P
 
2827
>       <TT
 
2828
CLASS="LITERAL"
 
2829
>TG_relname</TT
 
2830
> is now deprecated.  Comparable
 
2831
       changes have been made in the trigger parameters for the other
 
2832
       PLs as well.
 
2833
      </P
 
2834
></LI
 
2835
><LI
 
2836
><P
 
2837
>       Allow <TT
 
2838
CLASS="LITERAL"
 
2839
>FOR</TT
 
2840
> statements to return values to scalars
 
2841
       as well as records and row types (Pavel Stehule)
 
2842
      </P
 
2843
></LI
 
2844
><LI
 
2845
><P
 
2846
>       Add a <TT
 
2847
CLASS="LITERAL"
 
2848
>BY</TT
 
2849
> clause to the <TT
 
2850
CLASS="LITERAL"
 
2851
>FOR</TT
 
2852
> loop,
 
2853
       to control the iteration increment (Jaime Casanova)
 
2854
      </P
 
2855
></LI
 
2856
><LI
 
2857
><P
 
2858
>       Add <TT
 
2859
CLASS="LITERAL"
 
2860
>STRICT</TT
 
2861
> to <A
 
2862
HREF="plpgsql-statements.html#PLPGSQL-STATEMENTS-SQL-ONEROW"
 
2863
><TT
 
2864
CLASS="COMMAND"
 
2865
>SELECT
 
2866
       INTO</TT
 
2867
></A
 
2868
> (Matt Miller)
 
2869
      </P
 
2870
><P
 
2871
>       <TT
 
2872
CLASS="LITERAL"
 
2873
>STRICT</TT
 
2874
> mode throws an exception if more or less
 
2875
       than one row is returned by the <TT
 
2876
CLASS="COMMAND"
 
2877
>SELECT</TT
 
2878
>, for
 
2879
       <SPAN
 
2880
CLASS="PRODUCTNAME"
 
2881
>Oracle PL/SQL</SPAN
 
2882
> compatibility.
 
2883
      </P
 
2884
></LI
 
2885
></UL
 
2886
></DIV
 
2887
><DIV
 
2888
CLASS="SECT3"
 
2889
><H3
 
2890
CLASS="SECT3"
 
2891
><A
 
2892
NAME="AEN117122"
 
2893
>E.53.3.9. PL/Perl Server-Side Language Changes</A
 
2894
></H3
 
2895
><P
 
2896
></P
 
2897
><UL
 
2898
><LI
 
2899
><P
 
2900
>       Add <TT
 
2901
CLASS="LITERAL"
 
2902
>table_name</TT
 
2903
> and <TT
 
2904
CLASS="LITERAL"
 
2905
>table_schema</TT
 
2906
> to
 
2907
       trigger parameters (Adam Sj&oslash;gren)
 
2908
      </P
 
2909
></LI
 
2910
><LI
 
2911
><P
 
2912
>       Add prepared queries (Dmitry Karasik)
 
2913
      </P
 
2914
></LI
 
2915
><LI
 
2916
><P
 
2917
>       Make <TT
 
2918
CLASS="LITERAL"
 
2919
>$_TD</TT
 
2920
> trigger data a global variable (Andrew)
 
2921
      </P
 
2922
><P
 
2923
>       Previously, it was lexical, which caused unexpected sharing
 
2924
       violations.
 
2925
      </P
 
2926
></LI
 
2927
><LI
 
2928
><P
 
2929
>       Run PL/Perl and PL/PerlU in separate interpreters, for security
 
2930
       reasons (Andrew)
 
2931
      </P
 
2932
><P
 
2933
>       In consequence, they can no longer share data nor loaded modules.
 
2934
       Also, if Perl has not been compiled with the requisite flags to
 
2935
       allow multiple interpreters, only one of these languages can be used
 
2936
       in any given backend process.
 
2937
      </P
 
2938
></LI
 
2939
></UL
 
2940
></DIV
 
2941
><DIV
 
2942
CLASS="SECT3"
 
2943
><H3
 
2944
CLASS="SECT3"
 
2945
><A
 
2946
NAME="AEN117138"
 
2947
>E.53.3.10. PL/Python Server-Side Language Changes</A
 
2948
></H3
 
2949
><P
 
2950
></P
 
2951
><UL
 
2952
><LI
 
2953
><P
 
2954
>       Named parameters are passed as ordinary variables, as well as in the
 
2955
       <TT
 
2956
CLASS="LITERAL"
 
2957
>args[]</TT
 
2958
> array (Sven Suursoho)
 
2959
      </P
 
2960
></LI
 
2961
><LI
 
2962
><P
 
2963
>       Add <TT
 
2964
CLASS="LITERAL"
 
2965
>table_name</TT
 
2966
> and <TT
 
2967
CLASS="LITERAL"
 
2968
>table_schema</TT
 
2969
> to
 
2970
       trigger parameters (Andrew)
 
2971
      </P
 
2972
></LI
 
2973
><LI
 
2974
><P
 
2975
>       Allow returning of composite types and result sets (Sven Suursoho)
 
2976
      </P
 
2977
></LI
 
2978
><LI
 
2979
><P
 
2980
>       Return result-set as <TT
 
2981
CLASS="LITERAL"
 
2982
>list</TT
 
2983
>, <TT
 
2984
CLASS="LITERAL"
 
2985
>iterator</TT
 
2986
>,
 
2987
       or <TT
 
2988
CLASS="LITERAL"
 
2989
>generator </TT
 
2990
>(Sven Suursoho)
 
2991
      </P
 
2992
></LI
 
2993
><LI
 
2994
><P
 
2995
>       Allow functions to return <TT
 
2996
CLASS="LITERAL"
 
2997
>void</TT
 
2998
> (Neil)
 
2999
      </P
 
3000
></LI
 
3001
><LI
 
3002
><P
 
3003
>       Python 2.5 is now supported (Tom)
 
3004
      </P
 
3005
></LI
 
3006
></UL
 
3007
></DIV
 
3008
><DIV
 
3009
CLASS="SECT3"
 
3010
><H3
 
3011
CLASS="SECT3"
 
3012
><A
 
3013
NAME="AEN117160"
 
3014
>E.53.3.11. <A
 
3015
HREF="app-psql.html"
 
3016
><SPAN
 
3017
CLASS="APPLICATION"
 
3018
>psql</SPAN
 
3019
></A
 
3020
> Changes</A
 
3021
></H3
 
3022
><P
 
3023
></P
 
3024
><UL
 
3025
><LI
 
3026
><P
 
3027
>       Add new command <TT
 
3028
CLASS="LITERAL"
 
3029
>\password</TT
 
3030
> for changing role
 
3031
       password with client-side password encryption (Peter)
 
3032
      </P
 
3033
></LI
 
3034
><LI
 
3035
><P
 
3036
>       Allow <TT
 
3037
CLASS="LITERAL"
 
3038
>\c</TT
 
3039
> to connect to a new host and port
 
3040
       number (David, Volkan YAZICI)
 
3041
      </P
 
3042
></LI
 
3043
><LI
 
3044
><P
 
3045
>       Add tablespace display to <TT
 
3046
CLASS="LITERAL"
 
3047
>\l+</TT
 
3048
> (Philip Yarra)
 
3049
      </P
 
3050
></LI
 
3051
><LI
 
3052
><P
 
3053
>       Improve <TT
 
3054
CLASS="LITERAL"
 
3055
>\df</TT
 
3056
> slash command to include the argument
 
3057
       names and modes (<TT
 
3058
CLASS="LITERAL"
 
3059
>OUT</TT
 
3060
> or <TT
 
3061
CLASS="LITERAL"
 
3062
>INOUT</TT
 
3063
>) of
 
3064
       the function (David Fetter)
 
3065
      </P
 
3066
></LI
 
3067
><LI
 
3068
><P
 
3069
>       Support binary <TT
 
3070
CLASS="COMMAND"
 
3071
>COPY</TT
 
3072
> (Andreas Pflug)
 
3073
      </P
 
3074
></LI
 
3075
><LI
 
3076
><P
 
3077
>       Add option to run the entire session in a single transaction
 
3078
       (Simon)
 
3079
      </P
 
3080
><P
 
3081
>       Use option <TT
 
3082
CLASS="LITERAL"
 
3083
>-1</TT
 
3084
> or <TT
 
3085
CLASS="LITERAL"
 
3086
>--single-transaction</TT
 
3087
>.
 
3088
      </P
 
3089
></LI
 
3090
><LI
 
3091
><P
 
3092
>       Support for automatically retrieving <TT
 
3093
CLASS="COMMAND"
 
3094
>SELECT</TT
 
3095
>
 
3096
       results in batches using a cursor (Chris Mair)
 
3097
      </P
 
3098
><P
 
3099
>       This is enabled using <TT
 
3100
CLASS="COMMAND"
 
3101
>\set FETCH_COUNT
 
3102
       <TT
 
3103
CLASS="REPLACEABLE"
 
3104
><I
 
3105
>n</I
 
3106
></TT
 
3107
></TT
 
3108
>. This
 
3109
       feature allows large result sets to be retrieved in
 
3110
       <SPAN
 
3111
CLASS="APPLICATION"
 
3112
>psql</SPAN
 
3113
> without attempting to buffer the entire
 
3114
       result set in memory.
 
3115
      </P
 
3116
></LI
 
3117
><LI
 
3118
><P
 
3119
>       Make multi-line values align in the proper column
 
3120
       (Martijn van Oosterhout)
 
3121
      </P
 
3122
><P
 
3123
>       Field values containing newlines are now displayed in a more
 
3124
       readable fashion.
 
3125
      </P
 
3126
></LI
 
3127
><LI
 
3128
><P
 
3129
>       Save multi-line statements as a single entry, rather than
 
3130
       one line at a time (Sergey E. Koposov)
 
3131
      </P
 
3132
><P
 
3133
>       This makes up-arrow recall of queries easier.  (This is
 
3134
       not available on Windows, because that platform uses the native
 
3135
       command-line editing present in the operating system.)
 
3136
      </P
 
3137
></LI
 
3138
><LI
 
3139
><P
 
3140
>       Make the line counter 64-bit so it can handle files with more
 
3141
       than two billion lines (David Fetter)
 
3142
      </P
 
3143
></LI
 
3144
><LI
 
3145
><P
 
3146
>       Report both the returned data and the command status tag
 
3147
       for <TT
 
3148
CLASS="COMMAND"
 
3149
>INSERT</TT
 
3150
>/<TT
 
3151
CLASS="COMMAND"
 
3152
>UPDATE</TT
 
3153
>/<TT
 
3154
CLASS="COMMAND"
 
3155
>DELETE
 
3156
       RETURNING</TT
 
3157
> (Tom)
 
3158
      </P
 
3159
></LI
 
3160
></UL
 
3161
></DIV
 
3162
><DIV
 
3163
CLASS="SECT3"
 
3164
><H3
 
3165
CLASS="SECT3"
 
3166
><A
 
3167
NAME="AEN117207"
 
3168
>E.53.3.12. <A
 
3169
HREF="app-pgdump.html"
 
3170
><SPAN
 
3171
CLASS="APPLICATION"
 
3172
>pg_dump</SPAN
 
3173
></A
 
3174
> Changes</A
 
3175
></H3
 
3176
><P
 
3177
></P
 
3178
><UL
 
3179
><LI
 
3180
><P
 
3181
>       Allow complex selection of objects to be included or excluded
 
3182
       by <SPAN
 
3183
CLASS="APPLICATION"
 
3184
>pg_dump</SPAN
 
3185
> (Greg Sabino Mullane)
 
3186
      </P
 
3187
><P
 
3188
>       <SPAN
 
3189
CLASS="APPLICATION"
 
3190
>pg_dump</SPAN
 
3191
> now supports multiple <TT
 
3192
CLASS="LITERAL"
 
3193
>-n</TT
 
3194
>
 
3195
       (schema) and <TT
 
3196
CLASS="LITERAL"
 
3197
>-t</TT
 
3198
> (table) options, and adds
 
3199
       <TT
 
3200
CLASS="LITERAL"
 
3201
>-N</TT
 
3202
> and <TT
 
3203
CLASS="LITERAL"
 
3204
>-T</TT
 
3205
> options to exclude objects.
 
3206
       Also, the arguments of these switches can now be wild-card expressions
 
3207
       rather than single object names, for example
 
3208
       <TT
 
3209
CLASS="LITERAL"
 
3210
>-t 'foo*'</TT
 
3211
>, and a schema can be part of
 
3212
       a <TT
 
3213
CLASS="LITERAL"
 
3214
>-t</TT
 
3215
> or <TT
 
3216
CLASS="LITERAL"
 
3217
>-T</TT
 
3218
> switch, for example
 
3219
       <TT
 
3220
CLASS="LITERAL"
 
3221
>-t schema1.table1</TT
 
3222
>.
 
3223
      </P
 
3224
></LI
 
3225
><LI
 
3226
><P
 
3227
>       Add <A
 
3228
HREF="app-pgrestore.html"
 
3229
><SPAN
 
3230
CLASS="APPLICATION"
 
3231
>pg_restore</SPAN
 
3232
></A
 
3233
>
 
3234
       <TT
 
3235
CLASS="LITERAL"
 
3236
>--no-data-for-failed-tables</TT
 
3237
> option to suppress
 
3238
       loading data if table creation failed (i.e., the table already
 
3239
       exists) (Martin Pitt)
 
3240
      </P
 
3241
></LI
 
3242
><LI
 
3243
><P
 
3244
>       Add <A
 
3245
HREF="app-pgrestore.html"
 
3246
><SPAN
 
3247
CLASS="APPLICATION"
 
3248
>pg_restore</SPAN
 
3249
></A
 
3250
>
 
3251
       option to run the entire session in a single transaction
 
3252
       (Simon)
 
3253
      </P
 
3254
><P
 
3255
>       Use option <TT
 
3256
CLASS="LITERAL"
 
3257
>-1</TT
 
3258
> or <TT
 
3259
CLASS="LITERAL"
 
3260
>--single-transaction</TT
 
3261
>.
 
3262
      </P
 
3263
></LI
 
3264
></UL
 
3265
></DIV
 
3266
><DIV
 
3267
CLASS="SECT3"
 
3268
><H3
 
3269
CLASS="SECT3"
 
3270
><A
 
3271
NAME="AEN117237"
 
3272
>E.53.3.13. <A
 
3273
HREF="libpq.html"
 
3274
><SPAN
 
3275
CLASS="APPLICATION"
 
3276
>libpq</SPAN
 
3277
></A
 
3278
> Changes</A
 
3279
></H3
 
3280
><P
 
3281
></P
 
3282
><UL
 
3283
><LI
 
3284
><P
 
3285
>       Add <A
 
3286
HREF="libpq-misc.html"
 
3287
><CODE
 
3288
CLASS="FUNCTION"
 
3289
>PQencryptPassword()</CODE
 
3290
></A
 
3291
>
 
3292
       to encrypt passwords (Tom)
 
3293
      </P
 
3294
><P
 
3295
>       This allows passwords to be sent pre-encrypted for commands
 
3296
       like <A
 
3297
HREF="sql-alterrole.html"
 
3298
><TT
 
3299
CLASS="COMMAND"
 
3300
>ALTER ROLE ...
 
3301
       PASSWORD</TT
 
3302
></A
 
3303
>.
 
3304
      </P
 
3305
></LI
 
3306
><LI
 
3307
><P
 
3308
>       Add function <A
 
3309
HREF="libpq-threading.html"
 
3310
><CODE
 
3311
CLASS="FUNCTION"
 
3312
>PQisthreadsafe()</CODE
 
3313
></A
 
3314
>
 
3315
       (Bruce)
 
3316
      </P
 
3317
><P
 
3318
>       This allows applications to query the thread-safety status
 
3319
       of the library.
 
3320
      </P
 
3321
></LI
 
3322
><LI
 
3323
><P
 
3324
>       Add <A
 
3325
HREF="libpq-exec.html#LIBPQ-EXEC-MAIN"
 
3326
><CODE
 
3327
CLASS="FUNCTION"
 
3328
>PQdescribePrepared()</CODE
 
3329
></A
 
3330
>,
 
3331
       <A
 
3332
HREF="libpq-exec.html#LIBPQ-EXEC-MAIN"
 
3333
><CODE
 
3334
CLASS="FUNCTION"
 
3335
>PQdescribePortal()</CODE
 
3336
></A
 
3337
>,
 
3338
       and related functions to return information about previously
 
3339
       prepared statements and open cursors (Volkan YAZICI)
 
3340
      </P
 
3341
></LI
 
3342
><LI
 
3343
><P
 
3344
>       Allow <A
 
3345
HREF="libpq-ldap.html"
 
3346
><ACRONYM
 
3347
CLASS="ACRONYM"
 
3348
>LDAP</ACRONYM
 
3349
></A
 
3350
> lookups
 
3351
       from <A
 
3352
HREF="libpq-pgservice.html"
 
3353
><TT
 
3354
CLASS="FILENAME"
 
3355
>pg_service.conf</TT
 
3356
></A
 
3357
>
 
3358
       (Laurenz Albe)
 
3359
      </P
 
3360
></LI
 
3361
><LI
 
3362
><P
 
3363
>       Allow a hostname in <A
 
3364
HREF="libpq-pgpass.html"
 
3365
><TT
 
3366
CLASS="FILENAME"
 
3367
>~/.pgpass</TT
 
3368
></A
 
3369
>
 
3370
       to match the default socket directory (Bruce)
 
3371
      </P
 
3372
><P
 
3373
>       A blank hostname continues to match any Unix-socket connection,
 
3374
       but this addition allows entries that are specific to one of
 
3375
       several postmasters on the machine.
 
3376
      </P
 
3377
></LI
 
3378
></UL
 
3379
></DIV
 
3380
><DIV
 
3381
CLASS="SECT3"
 
3382
><H3
 
3383
CLASS="SECT3"
 
3384
><A
 
3385
NAME="AEN117271"
 
3386
>E.53.3.14. <A
 
3387
HREF="ecpg.html"
 
3388
><SPAN
 
3389
CLASS="APPLICATION"
 
3390
>ecpg</SPAN
 
3391
></A
 
3392
> Changes</A
 
3393
></H3
 
3394
><P
 
3395
></P
 
3396
><UL
 
3397
><LI
 
3398
><P
 
3399
>       Allow <A
 
3400
HREF="sql-show.html"
 
3401
><TT
 
3402
CLASS="COMMAND"
 
3403
>SHOW</TT
 
3404
></A
 
3405
> to
 
3406
       put its result into a variable (Joachim Wieland)
 
3407
      </P
 
3408
></LI
 
3409
><LI
 
3410
><P
 
3411
>       Add <A
 
3412
HREF="sql-copy.html"
 
3413
><TT
 
3414
CLASS="COMMAND"
 
3415
>COPY TO STDOUT</TT
 
3416
></A
 
3417
>
 
3418
       (Joachim Wieland)
 
3419
      </P
 
3420
></LI
 
3421
><LI
 
3422
><P
 
3423
>       Add regression tests (Joachim Wieland, Michael)
 
3424
      </P
 
3425
></LI
 
3426
><LI
 
3427
><P
 
3428
>       Major source code cleanups (Joachim Wieland, Michael)
 
3429
      </P
 
3430
></LI
 
3431
></UL
 
3432
></DIV
 
3433
><DIV
 
3434
CLASS="SECT3"
 
3435
><H3
 
3436
CLASS="SECT3"
 
3437
><A
 
3438
NAME="AEN117288"
 
3439
>E.53.3.15. <SPAN
 
3440
CLASS="APPLICATION"
 
3441
>Windows</SPAN
 
3442
> Port</A
 
3443
></H3
 
3444
><P
 
3445
></P
 
3446
><UL
 
3447
><LI
 
3448
><P
 
3449
>       Allow <ACRONYM
 
3450
CLASS="ACRONYM"
 
3451
>MSVC</ACRONYM
 
3452
> to compile the <SPAN
 
3453
CLASS="PRODUCTNAME"
 
3454
>PostgreSQL</SPAN
 
3455
>
 
3456
       server (Magnus, Hiroshi Saito)
 
3457
      </P
 
3458
></LI
 
3459
><LI
 
3460
><P
 
3461
>       Add <ACRONYM
 
3462
CLASS="ACRONYM"
 
3463
>MSVC</ACRONYM
 
3464
> support for utility commands and <A
 
3465
HREF="app-pgdump.html"
 
3466
><SPAN
 
3467
CLASS="APPLICATION"
 
3468
>pg_dump</SPAN
 
3469
></A
 
3470
> (Hiroshi
 
3471
       Saito)
 
3472
      </P
 
3473
></LI
 
3474
><LI
 
3475
><P
 
3476
>       Add support for Windows code pages <TT
 
3477
CLASS="LITERAL"
 
3478
>1253</TT
 
3479
>,
 
3480
       <TT
 
3481
CLASS="LITERAL"
 
3482
>1254</TT
 
3483
>, <TT
 
3484
CLASS="LITERAL"
 
3485
>1255</TT
 
3486
>, and <TT
 
3487
CLASS="LITERAL"
 
3488
>1257</TT
 
3489
>
 
3490
       (Kris Jurka)
 
3491
      </P
 
3492
></LI
 
3493
><LI
 
3494
><P
 
3495
>       Drop privileges on startup, so that the server can be started from
 
3496
       an administrative account (Magnus)
 
3497
      </P
 
3498
></LI
 
3499
><LI
 
3500
><P
 
3501
>       Stability fixes (Qingqing Zhou, Magnus)
 
3502
      </P
 
3503
></LI
 
3504
><LI
 
3505
><P
 
3506
>       Add native semaphore implementation (Qingqing Zhou)
 
3507
      </P
 
3508
><P
 
3509
>       The previous code mimicked SysV semaphores.
 
3510
      </P
 
3511
></LI
 
3512
></UL
 
3513
></DIV
 
3514
><DIV
 
3515
CLASS="SECT3"
 
3516
><H3
 
3517
CLASS="SECT3"
 
3518
><A
 
3519
NAME="AEN117314"
 
3520
>E.53.3.16. Source Code Changes</A
 
3521
></H3
 
3522
><P
 
3523
></P
 
3524
><UL
 
3525
><LI
 
3526
><P
 
3527
>       Add <A
 
3528
HREF="gin.html"
 
3529
><ACRONYM
 
3530
CLASS="ACRONYM"
 
3531
>GIN</ACRONYM
 
3532
></A
 
3533
> (Generalized
 
3534
       Inverted iNdex) index access method (Teodor, Oleg)
 
3535
      </P
 
3536
></LI
 
3537
><LI
 
3538
><P
 
3539
>       Remove R-tree indexing (Tom)
 
3540
      </P
 
3541
><P
 
3542
>       Rtree has been re-implemented using <A
 
3543
HREF="gist.html"
 
3544
><ACRONYM
 
3545
CLASS="ACRONYM"
 
3546
>GiST</ACRONYM
 
3547
></A
 
3548
>. Among other
 
3549
       differences, this means that rtree indexes now have support
 
3550
       for crash recovery via write-ahead logging (WAL).
 
3551
      </P
 
3552
></LI
 
3553
><LI
 
3554
><P
 
3555
>       Reduce libraries needlessly linked into the backend (Martijn
 
3556
       van Oosterhout, Tom)
 
3557
      </P
 
3558
></LI
 
3559
><LI
 
3560
><P
 
3561
>       Add a configure flag to allow libedit to be preferred over
 
3562
       <ACRONYM
 
3563
CLASS="ACRONYM"
 
3564
>GNU</ACRONYM
 
3565
> readline (Bruce)
 
3566
      </P
 
3567
><P
 
3568
>       Use configure <A
 
3569
HREF="install-procedure.html#CONFIGURE"
 
3570
><TT
 
3571
CLASS="LITERAL"
 
3572
>--with-libedit-preferred</TT
 
3573
></A
 
3574
>.
 
3575
      </P
 
3576
></LI
 
3577
><LI
 
3578
><P
 
3579
>       Allow installation into directories containing spaces
 
3580
       (Peter)
 
3581
      </P
 
3582
></LI
 
3583
><LI
 
3584
><P
 
3585
>       Improve ability to relocate installation directories (Tom)
 
3586
      </P
 
3587
></LI
 
3588
><LI
 
3589
><P
 
3590
>       Add support for <SPAN
 
3591
CLASS="PRODUCTNAME"
 
3592
>Solaris x86_64</SPAN
 
3593
> using the
 
3594
       <SPAN
 
3595
CLASS="PRODUCTNAME"
 
3596
>Solaris</SPAN
 
3597
> compiler (Pierre Girard, Theo
 
3598
       Schlossnagle, Bruce)
 
3599
      </P
 
3600
></LI
 
3601
><LI
 
3602
><P
 
3603
>       Add <SPAN
 
3604
CLASS="APPLICATION"
 
3605
>DTrace</SPAN
 
3606
> support (Robert Lor)
 
3607
      </P
 
3608
></LI
 
3609
><LI
 
3610
><P
 
3611
>       Add <TT
 
3612
CLASS="LITERAL"
 
3613
>PG_VERSION_NUM</TT
 
3614
> for use by third-party
 
3615
       applications wanting to test the backend version in C using &gt;
 
3616
       and &lt; comparisons (Bruce)
 
3617
      </P
 
3618
></LI
 
3619
><LI
 
3620
><P
 
3621
>       Add <TT
 
3622
CLASS="LITERAL"
 
3623
>XLOG_BLCKSZ</TT
 
3624
> as independent from <TT
 
3625
CLASS="LITERAL"
 
3626
>BLCKSZ</TT
 
3627
>
 
3628
       (Mark Wong)
 
3629
      </P
 
3630
></LI
 
3631
><LI
 
3632
><P
 
3633
>       Add <TT
 
3634
CLASS="LITERAL"
 
3635
>LWLOCK_STATS</TT
 
3636
> define to report locking
 
3637
       activity (Tom)
 
3638
      </P
 
3639
></LI
 
3640
><LI
 
3641
><P
 
3642
>       Emit warnings for unknown <SPAN
 
3643
CLASS="APPLICATION"
 
3644
>configure</SPAN
 
3645
> options
 
3646
       (Martijn van Oosterhout)
 
3647
      </P
 
3648
></LI
 
3649
><LI
 
3650
><P
 
3651
>       Add server support for <SPAN
 
3652
CLASS="QUOTE"
 
3653
>"plugin"</SPAN
 
3654
> libraries
 
3655
       that can be used for add-on tasks such as debugging and performance
 
3656
       measurement (Korry Douglas)
 
3657
      </P
 
3658
><P
 
3659
>       This consists of two features: a table of <SPAN
 
3660
CLASS="QUOTE"
 
3661
>"rendezvous
 
3662
       variables"</SPAN
 
3663
> that allows separately-loaded shared libraries to
 
3664
       communicate, and a new configuration parameter <A
 
3665
HREF="runtime-config-client.html#GUC-LOCAL-PRELOAD-LIBRARIES"
 
3666
><TT
 
3667
CLASS="VARNAME"
 
3668
>local_preload_libraries</TT
 
3669
></A
 
3670
>
 
3671
       that allows libraries to be loaded into specific sessions without
 
3672
       explicit cooperation from the client application.  This allows
 
3673
       external add-ons to implement features such as a PL/pgSQL debugger.
 
3674
      </P
 
3675
></LI
 
3676
><LI
 
3677
><P
 
3678
>       Rename existing configuration parameter
 
3679
       <TT
 
3680
CLASS="VARNAME"
 
3681
>preload_libraries</TT
 
3682
> to <A
 
3683
HREF="runtime-config-resource.html#GUC-SHARED-PRELOAD-LIBRARIES"
 
3684
><TT
 
3685
CLASS="VARNAME"
 
3686
>shared_preload_libraries</TT
 
3687
></A
 
3688
>
 
3689
       (Tom)
 
3690
      </P
 
3691
><P
 
3692
>       This was done for clarity in comparison to
 
3693
       <TT
 
3694
CLASS="VARNAME"
 
3695
>local_preload_libraries</TT
 
3696
>.
 
3697
      </P
 
3698
></LI
 
3699
><LI
 
3700
><P
 
3701
>       Add new configuration parameter <A
 
3702
HREF="runtime-config-preset.html#GUC-SERVER-VERSION-NUM"
 
3703
><TT
 
3704
CLASS="VARNAME"
 
3705
>server_version_num</TT
 
3706
></A
 
3707
>
 
3708
       (Greg Sabino Mullane)
 
3709
      </P
 
3710
><P
 
3711
>       This is like <TT
 
3712
CLASS="VARNAME"
 
3713
>server_version</TT
 
3714
>, but is an
 
3715
       integer, e.g.  <TT
 
3716
CLASS="LITERAL"
 
3717
>80200</TT
 
3718
>. This allows applications to
 
3719
       make version checks more easily.
 
3720
      </P
 
3721
></LI
 
3722
><LI
 
3723
><P
 
3724
>       Add a configuration parameter <A
 
3725
HREF="runtime-config-query.html#GUC-SEQ-PAGE-COST"
 
3726
><TT
 
3727
CLASS="VARNAME"
 
3728
>seq_page_cost</TT
 
3729
></A
 
3730
>
 
3731
       (Tom)
 
3732
      </P
 
3733
></LI
 
3734
><LI
 
3735
><P
 
3736
>       Re-implement the <A
 
3737
HREF="regress.html"
 
3738
>regression test</A
 
3739
> script as a C program
 
3740
       (Magnus, Tom)
 
3741
      </P
 
3742
></LI
 
3743
><LI
 
3744
><P
 
3745
>       Allow loadable modules to allocate shared memory and
 
3746
       lightweight locks (Marc Munro)
 
3747
      </P
 
3748
></LI
 
3749
><LI
 
3750
><P
 
3751
>       Add automatic initialization and finalization of dynamically
 
3752
       loaded libraries (Ralf Engelschall, Tom)
 
3753
      </P
 
3754
><P
 
3755
>       New <A
 
3756
HREF="xfunc-c.html#XFUNC-C-DYNLOAD"
 
3757
>functions</A
 
3758
>
 
3759
       <CODE
 
3760
CLASS="FUNCTION"
 
3761
>_PG_init()</CODE
 
3762
> and <CODE
 
3763
CLASS="FUNCTION"
 
3764
>_PG_fini()</CODE
 
3765
> are
 
3766
       called if the library defines such symbols.  Hence we no
 
3767
       longer need to specify an initialization function in
 
3768
       <TT
 
3769
CLASS="VARNAME"
 
3770
>shared_preload_libraries</TT
 
3771
>; we can assume that
 
3772
       the library used the <CODE
 
3773
CLASS="FUNCTION"
 
3774
>_PG_init()</CODE
 
3775
> convention
 
3776
       instead.
 
3777
      </P
 
3778
></LI
 
3779
><LI
 
3780
><P
 
3781
>       Add <A
 
3782
HREF="xfunc-c.html#XFUNC-C-DYNLOAD"
 
3783
><TT
 
3784
CLASS="LITERAL"
 
3785
>PG_MODULE_MAGIC</TT
 
3786
></A
 
3787
>
 
3788
       header block to all shared object files (Martijn van
 
3789
       Oosterhout)
 
3790
      </P
 
3791
><P
 
3792
>       The magic block prevents version mismatches between loadable object
 
3793
       files and servers.
 
3794
      </P
 
3795
></LI
 
3796
><LI
 
3797
><P
 
3798
>        Add shared library support for AIX (Laurenz Albe)
 
3799
      </P
 
3800
></LI
 
3801
><LI
 
3802
><P
 
3803
>       New <A
 
3804
HREF="datatype-xml.html"
 
3805
><ACRONYM
 
3806
CLASS="ACRONYM"
 
3807
>XML</ACRONYM
 
3808
></A
 
3809
>
 
3810
       documentation section (Bruce)
 
3811
      </P
 
3812
></LI
 
3813
></UL
 
3814
></DIV
 
3815
><DIV
 
3816
CLASS="SECT3"
 
3817
><H3
 
3818
CLASS="SECT3"
 
3819
><A
 
3820
NAME="AEN117407"
 
3821
>E.53.3.17. Contrib Changes</A
 
3822
></H3
 
3823
><P
 
3824
></P
 
3825
><UL
 
3826
><LI
 
3827
><P
 
3828
>       Major tsearch2 improvements (Oleg, Teodor)
 
3829
      </P
 
3830
><P
 
3831
></P
 
3832
><UL
 
3833
><LI
 
3834
><P
 
3835
>         multibyte encoding support, including <ACRONYM
 
3836
CLASS="ACRONYM"
 
3837
>UTF8</ACRONYM
 
3838
>
 
3839
        </P
 
3840
></LI
 
3841
><LI
 
3842
><P
 
3843
>         query rewriting support
 
3844
        </P
 
3845
></LI
 
3846
><LI
 
3847
><P
 
3848
>         improved ranking functions
 
3849
        </P
 
3850
></LI
 
3851
><LI
 
3852
><P
 
3853
>         thesaurus dictionary support
 
3854
        </P
 
3855
></LI
 
3856
><LI
 
3857
><P
 
3858
>         Ispell dictionaries now recognize <SPAN
 
3859
CLASS="APPLICATION"
 
3860
>MySpell</SPAN
 
3861
>
 
3862
         format, used by <SPAN
 
3863
CLASS="APPLICATION"
 
3864
>OpenOffice</SPAN
 
3865
>
 
3866
        </P
 
3867
></LI
 
3868
><LI
 
3869
><P
 
3870
>         <ACRONYM
 
3871
CLASS="ACRONYM"
 
3872
>GIN</ACRONYM
 
3873
> support
 
3874
        </P
 
3875
></LI
 
3876
></UL
 
3877
></LI
 
3878
><LI
 
3879
><P
 
3880
>       Add adminpack module containing <SPAN
 
3881
CLASS="APPLICATION"
 
3882
>Pgadmin</SPAN
 
3883
> administration
 
3884
       functions (Dave)
 
3885
      </P
 
3886
><P
 
3887
>       These functions provide additional file system access
 
3888
       routines not present in the default <SPAN
 
3889
CLASS="PRODUCTNAME"
 
3890
>PostgreSQL</SPAN
 
3891
>
 
3892
       server.
 
3893
      </P
 
3894
></LI
 
3895
><LI
 
3896
><P
 
3897
>       Add sslinfo module (Victor Wagner)
 
3898
      </P
 
3899
><P
 
3900
>       Reports information about the current connection's <ACRONYM
 
3901
CLASS="ACRONYM"
 
3902
>SSL</ACRONYM
 
3903
>
 
3904
       certificate.
 
3905
      </P
 
3906
></LI
 
3907
><LI
 
3908
><P
 
3909
>       Add pgrowlocks module (Tatsuo)
 
3910
      </P
 
3911
><P
 
3912
>       This shows row locking information for a specified table.
 
3913
      </P
 
3914
></LI
 
3915
><LI
 
3916
><P
 
3917
>       Add hstore module (Oleg, Teodor)
 
3918
      </P
 
3919
></LI
 
3920
><LI
 
3921
><P
 
3922
>       Add isn module, replacing isbn_issn (Jeremy Kronuz)
 
3923
      </P
 
3924
><P
 
3925
>       This new implementation supports <ACRONYM
 
3926
CLASS="ACRONYM"
 
3927
>EAN13</ACRONYM
 
3928
>, <ACRONYM
 
3929
CLASS="ACRONYM"
 
3930
>UPC</ACRONYM
 
3931
>,
 
3932
       <ACRONYM
 
3933
CLASS="ACRONYM"
 
3934
>ISBN</ACRONYM
 
3935
> (books), <ACRONYM
 
3936
CLASS="ACRONYM"
 
3937
>ISMN</ACRONYM
 
3938
> (music), and
 
3939
       <ACRONYM
 
3940
CLASS="ACRONYM"
 
3941
>ISSN</ACRONYM
 
3942
> (serials).
 
3943
      </P
 
3944
></LI
 
3945
><LI
 
3946
><P
 
3947
>       Add index information functions to pgstattuple (ITAGAKI Takahiro,
 
3948
       Satoshi Nagayasu)
 
3949
      </P
 
3950
></LI
 
3951
><LI
 
3952
><P
 
3953
>       Add pg_freespacemap module to display free space map information
 
3954
       (Mark Kirkwood)
 
3955
      </P
 
3956
></LI
 
3957
><LI
 
3958
><P
 
3959
>       pgcrypto now has all planned functionality (Marko Kreen)
 
3960
      </P
 
3961
><P
 
3962
></P
 
3963
><UL
 
3964
><LI
 
3965
><P
 
3966
>         Include iMath library in pgcrypto to have the public-key encryption
 
3967
         functions always available.
 
3968
        </P
 
3969
></LI
 
3970
><LI
 
3971
><P
 
3972
>         Add SHA224 algorithm that was missing in OpenBSD code.
 
3973
        </P
 
3974
></LI
 
3975
><LI
 
3976
><P
 
3977
>         Activate builtin code for SHA224/256/384/512 hashes on older
 
3978
         OpenSSL to have those algorithms always available.
 
3979
        </P
 
3980
></LI
 
3981
><LI
 
3982
><P
 
3983
>         New function gen_random_bytes() that returns cryptographically strong
 
3984
         randomness.  Useful for generating encryption keys.
 
3985
        </P
 
3986
></LI
 
3987
><LI
 
3988
><P
 
3989
>         Remove digest_exists(), hmac_exists() and cipher_exists() functions.
 
3990
        </P
 
3991
></LI
 
3992
></UL
 
3993
></LI
 
3994
><LI
 
3995
><P
 
3996
>       Improvements to cube module (Joshua Reich)
 
3997
      </P
 
3998
><P
 
3999
>       New functions are <CODE
 
4000
CLASS="FUNCTION"
 
4001
>cube(float[])</CODE
 
4002
>,
 
4003
       <CODE
 
4004
CLASS="FUNCTION"
 
4005
>cube(float[], float[])</CODE
 
4006
>, and
 
4007
       <CODE
 
4008
CLASS="FUNCTION"
 
4009
>cube_subset(cube, int4[])</CODE
 
4010
>.
 
4011
      </P
 
4012
></LI
 
4013
><LI
 
4014
><P
 
4015
>       Add async query capability to dblink (Kai Londenberg,
 
4016
       Joe Conway)
 
4017
      </P
 
4018
></LI
 
4019
><LI
 
4020
><P
 
4021
>       New operators for array-subset comparisons (<TT
 
4022
CLASS="LITERAL"
 
4023
>@&gt;</TT
 
4024
>,
 
4025
       <TT
 
4026
CLASS="LITERAL"
 
4027
>&lt;@</TT
 
4028
>, <TT
 
4029
CLASS="LITERAL"
 
4030
>&amp;&amp;</TT
 
4031
>) (Tom)
 
4032
      </P
 
4033
><P
 
4034
>       Various contrib packages already had these operators for their
 
4035
       datatypes, but the naming wasn't consistent.  We have now added
 
4036
       consistently named array-subset comparison operators to the core code
 
4037
       and all the contrib packages that have such functionality.
 
4038
       (The old names remain available, but are deprecated.)
 
4039
      </P
 
4040
></LI
 
4041
><LI
 
4042
><P
 
4043
>       Add uninstall scripts for all contrib packages that have install
 
4044
       scripts (David, Josh Drake)
 
4045
      </P
 
4046
></LI
 
4047
></UL
 
4048
></DIV
 
4049
></DIV
 
4050
></DIV
 
4051
><DIV
 
4052
CLASS="NAVFOOTER"
 
4053
><HR
 
4054
ALIGN="LEFT"
 
4055
WIDTH="100%"><TABLE
 
4056
SUMMARY="Footer navigation table"
 
4057
WIDTH="100%"
 
4058
BORDER="0"
 
4059
CELLPADDING="0"
 
4060
CELLSPACING="0"
 
4061
><TR
 
4062
><TD
 
4063
WIDTH="33%"
 
4064
ALIGN="left"
 
4065
VALIGN="top"
 
4066
><A
 
4067
HREF="release-8-2-1.html"
 
4068
ACCESSKEY="P"
 
4069
>Prev</A
 
4070
></TD
 
4071
><TD
 
4072
WIDTH="34%"
 
4073
ALIGN="center"
 
4074
VALIGN="top"
 
4075
><A
 
4076
HREF="index.html"
 
4077
ACCESSKEY="H"
 
4078
>Home</A
 
4079
></TD
 
4080
><TD
 
4081
WIDTH="33%"
 
4082
ALIGN="right"
 
4083
VALIGN="top"
 
4084
><A
 
4085
HREF="release-8-1-23.html"
 
4086
ACCESSKEY="N"
 
4087
>Next</A
 
4088
></TD
 
4089
></TR
 
4090
><TR
 
4091
><TD
 
4092
WIDTH="33%"
 
4093
ALIGN="left"
 
4094
VALIGN="top"
 
4095
>Release 8.2.1</TD
 
4096
><TD
 
4097
WIDTH="34%"
 
4098
ALIGN="center"
 
4099
VALIGN="top"
 
4100
><A
 
4101
HREF="release.html"
 
4102
ACCESSKEY="U"
 
4103
>Up</A
 
4104
></TD
 
4105
><TD
 
4106
WIDTH="33%"
 
4107
ALIGN="right"
 
4108
VALIGN="top"
 
4109
>Release 8.1.23</TD
 
4110
></TR
 
4111
></TABLE
 
4112
></DIV
 
4113
></BODY
 
4114
></HTML
 
4115
>
 
 
b'\\ No newline at end of file'