OSDN Git Service
Bruce Momjian [Mon, 26 Apr 2004 04:04:42 +0000 (04:04 +0000)]
Unconditionally define:
-D_REENTRANT -D_THREAD_SAFE -D_POSIX_PTHREAD_SEMANTICS
for all ports. It can't hurt if they are not supported, but it makes
our job easier for porting.
Should fix Darwin compile and other platforms without mucking with the
thread detection code.
Bruce Momjian [Mon, 26 Apr 2004 00:48:38 +0000 (00:48 +0000)]
Clean tools/thread on make clean/distclean.
Bruce Momjian [Mon, 26 Apr 2004 00:44:39 +0000 (00:44 +0000)]
Exit with non-zero error on thread test failures.
Bruce Momjian [Mon, 26 Apr 2004 00:38:25 +0000 (00:38 +0000)]
More thread error improvments.
Bruce Momjian [Mon, 26 Apr 2004 00:36:18 +0000 (00:36 +0000)]
More thread error message improvments.
Bruce Momjian [Mon, 26 Apr 2004 00:34:12 +0000 (00:34 +0000)]
More thread error improvements.
Bruce Momjian [Mon, 26 Apr 2004 00:32:00 +0000 (00:32 +0000)]
Improve thread error message.
Bruce Momjian [Mon, 26 Apr 2004 00:29:24 +0000 (00:29 +0000)]
Improve error message for platform thread failure.
Neil Conway [Sun, 25 Apr 2004 23:50:58 +0000 (23:50 +0000)]
Tiny assorted fixes: correct a typo in a comment in vacuumlazy.c, remove
some unused #include directives from bufmgr.c, and clarify comments in
bufmgr.h and buf.h
Bruce Momjian [Sun, 25 Apr 2004 21:09:08 +0000 (21:09 +0000)]
More thread cleanups.
Bruce Momjian [Sun, 25 Apr 2004 21:04:59 +0000 (21:04 +0000)]
Add mention to check config.log if thread test failure.
Bruce Momjian [Sun, 25 Apr 2004 21:03:27 +0000 (21:03 +0000)]
Fix typo on thread lib name.
Bruce Momjian [Sun, 25 Apr 2004 20:57:32 +0000 (20:57 +0000)]
Make thread flags CFLAGS, not CPPFLAGS.
Bruce Momjian [Sun, 25 Apr 2004 20:47:56 +0000 (20:47 +0000)]
No need to use our standard libs for the thread test --- they might not
be compiled yet.
Neil Conway [Sun, 25 Apr 2004 18:23:57 +0000 (18:23 +0000)]
Remove the last traces of Joe Hellerstein's "xfunc" optimization. Patch
from Alvaro Herrera. Also, removed lispsort.c, since it is no longer
used.
Neil Conway [Sat, 24 Apr 2004 22:58:40 +0000 (22:58 +0000)]
Fix typo in libpq docs.
Neil Conway [Sat, 24 Apr 2004 22:53:44 +0000 (22:53 +0000)]
Document that PQoidValue(), PQcmdTuples(), and PQoidStatus() now work
when the command that generated the PGresult was an EXECUTE of an
appropriate prepared statement.
Tom Lane [Sat, 24 Apr 2004 20:10:34 +0000 (20:10 +0000)]
Ensure getaddrinfo_all returns null result on failure.
Bruce Momjian [Sat, 24 Apr 2004 03:09:35 +0000 (03:09 +0000)]
Check for gmake, then make, when doing thread test.
Bruce Momjian [Sat, 24 Apr 2004 00:14:28 +0000 (00:14 +0000)]
Add mention to run thread test program if user is experiencing problems
with threaded applications.
Bruce Momjian [Fri, 23 Apr 2004 23:58:12 +0000 (23:58 +0000)]
Hook thread_test program run at the end of configure run.
Add test for cross-compiles that they have to run the thread_test
program on the target machine.
Bruce Momjian [Fri, 23 Apr 2004 22:21:49 +0000 (22:21 +0000)]
Report error if thread-test is run without having threading enabled in
configure.
Bruce Momjian [Fri, 23 Apr 2004 20:35:50 +0000 (20:35 +0000)]
Improve thread test program. Test only functions that need testing.
Neil Conway [Fri, 23 Apr 2004 20:32:20 +0000 (20:32 +0000)]
Add ceiling() as an alias for ceil(), and power() as an alias for pow().
Regression tests and documentation have both been updated.
SQL2003 requires that both ceiling() and ceil() be present, so I have
documented both spellings. SQL2003 doesn't mention pow() as far as I
can see, so I decided to replace pow() with power() in the documentation:
there is little reason to encourage the continued usage of a function
that isn't compliant with the standard, given a standard-compliant
alternative.
RELEASE NOTES: should state that pow() is considered deprecated
(although I don't see the need to ever remove it.)
Bruce Momjian [Fri, 23 Apr 2004 18:15:55 +0000 (18:15 +0000)]
Add new auto-detection of thread flags.
Allow additional thread flags to be added via port templates.
Change thread flag names to PTHREAD_CFLAGS and PTHREAD_LIBS to match new
configure script.
Michael Meskes [Fri, 23 Apr 2004 06:17:14 +0000 (06:17 +0000)]
Fixed memory misusage in variable handling.
Bruce Momjian [Thu, 22 Apr 2004 23:58:03 +0000 (23:58 +0000)]
Simplify thread test program.
Neil Conway [Thu, 22 Apr 2004 17:38:16 +0000 (17:38 +0000)]
Make psql's \d+ command indicate whether the table in question
contains OIDs. Also, minor documentation improvements to the
psql reference page.
Bruce Momjian [Thu, 22 Apr 2004 14:34:38 +0000 (14:34 +0000)]
Rename global psql startup file to psqlrc.sample.
Bruce Momjian [Thu, 22 Apr 2004 14:33:49 +0000 (14:33 +0000)]
Fix filename mention in psqlrc.sample file.
Tom Lane [Thu, 22 Apr 2004 11:46:22 +0000 (11:46 +0000)]
Put information about tag in Outputs section, where it belongs.
Peter Eisentraut [Thu, 22 Apr 2004 08:36:48 +0000 (08:36 +0000)]
Fix typo
Neil Conway [Thu, 22 Apr 2004 07:21:55 +0000 (07:21 +0000)]
Make LocalRefCount and PrivateRefCount arrays of int32, rather than long.
This saves a small amount of per-backend memory for LP64 machines.
Neil Conway [Thu, 22 Apr 2004 07:02:36 +0000 (07:02 +0000)]
Improvements to the backup & restore documentation.
Bruce Momjian [Thu, 22 Apr 2004 04:18:41 +0000 (04:18 +0000)]
Update EXECUTE docs to mention tag matches prepared statement.
Update log_statement to more clearly state it doesn't filter based on
the statement type of the prepared statement.
Bruce Momjian [Thu, 22 Apr 2004 03:51:24 +0000 (03:51 +0000)]
Per discussion earlier today, here is a fix that lets ereport() on win32
report socket errors.
Magnus Hagander
Bruce Momjian [Thu, 22 Apr 2004 03:48:38 +0000 (03:48 +0000)]
Attached is are a few small fixes for dbmirror.
1. Fixed bug where sequences were being mirrored incorrectly if they
exceeded 127
2. Fixed a bug in the perl script with mirroring sequences(John
Burtenshaw sent an email to patches describing the bug in March but I
htink he forgot to attach his patch)
3. The dates/times in the transaction files will always use 2 digits.
Steven Singer
Bruce Momjian [Thu, 22 Apr 2004 02:58:21 +0000 (02:58 +0000)]
This patch makes the EXECUTE command's completion tag return the
completion tag of the actual statement executed. This allows the
correct update count to be returned for UPDATE/INSERT/DELETE
statements.
Kris Jurka
Bruce Momjian [Thu, 22 Apr 2004 02:39:10 +0000 (02:39 +0000)]
Please find attached a small patch so that "pg_restore" ignores some sql
errors. This is the second submission, which integrates Tom comments about
localisation and exit code. I also added some comments about one sql
command which is not ignored.
Fabien COELHO
Bruce Momjian [Thu, 22 Apr 2004 01:53:37 +0000 (01:53 +0000)]
Add global psql config file, psql.rc.sample.
Neil Conway [Wed, 21 Apr 2004 21:52:41 +0000 (21:52 +0000)]
Minor improvement to CREATE AGGREGATE docs: add an xref to the docs for
builtin aggregate functions.
Bruce Momjian [Wed, 21 Apr 2004 20:58:56 +0000 (20:58 +0000)]
More thread test program improvements.
Bruce Momjian [Wed, 21 Apr 2004 20:51:54 +0000 (20:51 +0000)]
Improve thread test program to show if non-*_r functions are even called.
Tom Lane [Wed, 21 Apr 2004 18:24:26 +0000 (18:24 +0000)]
Tweak indexscan and seqscan code to arrange that steps from one page to
the next are handled by ReleaseAndReadBuffer rather than separate
ReleaseBuffer and ReadBuffer calls. This cuts the number of acquisitions
of the BufMgrLock by a factor of 2 (possibly more, if an indexscan happens
to pull successive rows from the same heap page). Unfortunately this
doesn't seem enough to get us out of the recently discussed context-switch
storm problem, but it's surely worth doing anyway.
Tom Lane [Wed, 21 Apr 2004 18:06:30 +0000 (18:06 +0000)]
Another round of code cleanup on bufmgr. Use BM_VALID flag to keep track
of whether we have successfully read data into a buffer; this makes the
error behavior a bit more transparent (IMHO anyway), and also makes it
work correctly for local buffers which don't use Start/TerminateBufferIO.
Collapse three separate functions for writing a shared buffer into one.
This overlaps a bit with cleanups that Neil proposed awhile back, but
seems not to have committed yet.
Peter Eisentraut [Wed, 21 Apr 2004 13:18:28 +0000 (13:18 +0000)]
New link for Solaris IPC article
Bruce Momjian [Wed, 21 Apr 2004 00:34:18 +0000 (00:34 +0000)]
Change COPY CSV keyword to be:
FORCE QUOTE to force quotes
FORCE NOT NULL to quote null input values
Bruce Momjian [Tue, 20 Apr 2004 20:16:30 +0000 (20:16 +0000)]
Done:
< * Add NO WAIT option to various SQL commands
> * -Add NO WAIT LOCKs
Bruce Momjian [Tue, 20 Apr 2004 16:56:19 +0000 (16:56 +0000)]
Add doc mention that:
process directly. Some parameters can only be set at server start;
any changes to their entries in the configuration file will be ignored
until the server is restarted.
Bruce Momjian [Tue, 20 Apr 2004 14:36:49 +0000 (14:36 +0000)]
Add NetBSD thread compile flags.
Bruce Momjian [Tue, 20 Apr 2004 14:03:30 +0000 (14:03 +0000)]
Add:
> * Allow AFTER triggers on system tables
Bruce Momjian [Tue, 20 Apr 2004 12:53:28 +0000 (12:53 +0000)]
Improve IS NULL partial index wording.
Bruce Momjian [Tue, 20 Apr 2004 04:26:27 +0000 (04:26 +0000)]
Done:
> * -Exit postmaster if postgresql.conf can not be opened
Bruce Momjian [Tue, 20 Apr 2004 04:25:47 +0000 (04:25 +0000)]
Document partial indexes for IS NULL lookups.
Bruce Momjian [Tue, 20 Apr 2004 01:14:55 +0000 (01:14 +0000)]
Remove additional tcl doc mention.
Bruce Momjian [Tue, 20 Apr 2004 01:11:49 +0000 (01:11 +0000)]
Remove TCL docs.
Bruce Momjian [Tue, 20 Apr 2004 01:00:26 +0000 (01:00 +0000)]
> >> My question is whether postgres can index null values, and if not, do I
> >> have to accept a full table scan when locating records.
> >
> > It indexes them, but "is null" is not an indexable operator, so you
> > can't directly solve the above with a 3-column index. What you can do
> > instead is use a partial index, for instance
> >
> > create index i on CUSTOMER.WCCustOrderStatusLog (WCOrderStatusID)
> > where Acknowledged is null and Processing is null;
>
> That's a very nifty trick and exactly the sort of answer I was after!
Add CREATE INDEX doc mention of using partial indexes for IS NULL
indexing; idea from Tom.
Bruce Momjian [Tue, 20 Apr 2004 00:40:06 +0000 (00:40 +0000)]
Remove pg_encoding. Not needed anymore since we have an initdb in C.
PostgreSQL Daemon [Tue, 20 Apr 2004 00:33:53 +0000 (00:33 +0000)]
Remove all of the libpgtcl and pgtclsh files, including all references to
them within the various makefiles
with_tcl is still required for the src/pl/tcl language
Bruce Momjian [Mon, 19 Apr 2004 23:36:48 +0000 (23:36 +0000)]
In reading the 7.4.2 docs, the sql reference page for PREPARE doesn't
reference DEALLOCATE in any way. It points to EXECUTE, but not to
DEALLOCATE. Suggested fix:
... This also means that a single prepared statement cannot be used by
multiple simultaneous database clients; however, each client can create
their own prepared statement to use. The prepared statement can be
manually cleaned up using the DEALLOCATE command.
James Robinson
Tom Lane [Mon, 19 Apr 2004 23:27:17 +0000 (23:27 +0000)]
Code review for ARC patch. Eliminate static variables, improve handling
of VACUUM cases so that VACUUM requests don't affect the ARC state at all,
avoid corner case where BufferSync would uselessly rewrite a buffer that
no longer contains the page that was to be flushed. Make some minor
other cleanups in and around the bufmgr as well, such as moving PinBuffer
and UnpinBuffer into bufmgr.c where they really belong.
Bruce Momjian [Mon, 19 Apr 2004 23:19:02 +0000 (23:19 +0000)]
Update mention of diff.
Bruce Momjian [Mon, 19 Apr 2004 23:18:12 +0000 (23:18 +0000)]
Update to my2pg version 1.28, add docs, update URL for newest version.
Create diff of custom changes Tom made to the utility for CREATE
FUNCTION.
This will make moving this utility out of CVS easier.
Bruce Momjian [Mon, 19 Apr 2004 23:11:49 +0000 (23:11 +0000)]
Update to my2pg 1.28, from:
http://www.omnistarinc.com/~fonin/downloads.php#my2pg
Bruce Momjian [Mon, 19 Apr 2004 21:58:02 +0000 (21:58 +0000)]
Prevent doubling of escapes when not in quote mode for CSV.
Bruce Momjian [Mon, 19 Apr 2004 21:30:18 +0000 (21:30 +0000)]
The attached patch for contrib/pg_autovacuum/README.pg_autovacuum fixes
one apparent error and makes a minor stylistic change that makes it more
consistent and makes clear something that confused me :-)
Andrew Dunstan
Bruce Momjian [Mon, 19 Apr 2004 21:22:14 +0000 (21:22 +0000)]
Remove debug code that acidentally got into CVS from previous commit.
Bruce Momjian [Mon, 19 Apr 2004 21:21:34 +0000 (21:21 +0000)]
Fix for BEGIN with ISOLATION/READONLY clauses.
Fix for code originally added for 7.5.
Bruce Momjian [Mon, 19 Apr 2004 17:42:59 +0000 (17:42 +0000)]
* Most changes are to fix warnings issued when compiling win32
* removed a few redundant defines
* get_user_name safe under win32
* rationalized pipe read EOF for win32 (UPDATED PATCH USED)
* changed all backend instances of sleep() to pg_usleep
- except for the SLEEP_ON_ASSERT in assert.c, as it would exceed a
32-bit long [Note to patcher: If a SLEEP_ON_ASSERT of 2000 seconds is
acceptable, please replace with pg_usleep(2000000000L)]
I added a comment to that part of the code:
/*
* It would be nice to use pg_usleep() here, but only does 2000 sec
* or 33 minutes, which seems too short.
*/
sleep(
1000000);
Claudio Natoli
Bruce Momjian [Mon, 19 Apr 2004 17:22:31 +0000 (17:22 +0000)]
Complete TODO item:
o -Allow dump/load of CSV format
This adds new keywords to COPY and \copy:
CSV - enable CSV mode (comma separated variable)
QUOTE - specify quote character
ESCAPE - specify escape character
FORCE - force quoting of specified column
LITERAL - suppress null comparison for columns
Doc changes included. Regression updates coming from Andrew.
Bruce Momjian [Mon, 19 Apr 2004 17:03:13 +0000 (17:03 +0000)]
Done:
> o -Allow dump/load of CSV format
Bruce Momjian [Mon, 19 Apr 2004 15:37:56 +0000 (15:37 +0000)]
Fix typo:
< * -Allow psql \du to show groups, and add \dg for groups
> * -Allow psql \du to show users, and add \dg for groups
Tom Lane [Sun, 18 Apr 2004 18:12:58 +0000 (18:12 +0000)]
Tweak findTargetlistEntry so that bare names occurring in GROUP BY clauses
are sought first as local FROM columns, then as local SELECT-list aliases,
and finally as outer FROM columns; the former behavior made outer FROM
columns take precedence over aliases. This does not change spec
conformance because SQL99 allows only the first case anyway, and it seems
more useful and self-consistent. Per gripe from Dennis Bjorklund 2004-04-05.
Bruce Momjian [Fri, 16 Apr 2004 12:59:05 +0000 (12:59 +0000)]
Handle Warn_restart_ready properly in SIGTERM safety patch.
Bruce Momjian [Thu, 15 Apr 2004 22:36:03 +0000 (22:36 +0000)]
Modify COPY for() loop to use attnum as a variable name, not 'i'.
Tom Lane [Thu, 15 Apr 2004 13:01:45 +0000 (13:01 +0000)]
Improve syntax error messages for invalid-argument cases in RETURN and
RETURN NEXT.
Peter Eisentraut [Thu, 15 Apr 2004 08:15:09 +0000 (08:15 +0000)]
Translation updates
Peter Eisentraut [Thu, 15 Apr 2004 08:04:05 +0000 (08:04 +0000)]
Translation updates
Bruce Momjian [Thu, 15 Apr 2004 04:46:18 +0000 (04:46 +0000)]
Clarify meaning of second DateStyle value.
Bruce Momjian [Wed, 14 Apr 2004 19:15:27 +0000 (19:15 +0000)]
Update name:
< * Alvaro Herrera <alvherre@dcc.uchile.cl>
> * Alvaro is Alvaro Herrera <alvherre@dcc.uchile.cl>
Bruce Momjian [Wed, 14 Apr 2004 18:33:03 +0000 (18:33 +0000)]
Update owners of items:
< * Add the concept of dataspaces/tablespaces [tablespaces]
> * Add the concept of dataspaces/tablespaces [tablespaces] (Gavin)
167c167
< * Allow savepoints / nested transactions [transactions] (Bruce)
> * Allow savepoints / nested transactions [transactions] (Alvaro)
240c240
< o Allow Java server-side programming [java]
> o Allow Java server-side programming [java] (Dave)
496a497
> * Alvaro Herrera <alvherre@dcc.uchile.cl>
Bruce Momjian [Mon, 12 Apr 2004 16:19:18 +0000 (16:19 +0000)]
Here's an attempt at new socket and signal code for win32.
It works on the principle of turning sockets into non-blocking, and then
emulate blocking behaviour on top of that, while allowing signals to
run. Signals are now implemented using an event instead of APCs, thus
getting rid of the issue of APCs not being compatible with "old style"
sockets functions.
It also moves the win32 specific code away from pqsignal.h/c into
port/win32, and also removes the "thread style workaround" of the APC
issue previously in place.
In order to make things work, a few things are also changed in pgstat.c:
1) There is now a separate pipe to the collector and the bufferer. This
is required because the pipe will otherwise only be signalled in one of
the processes when the postmaster goes down. The MS winsock code for
select() must have some kind of workaround for this behaviour, but I
have found no stable way of doing that. You really are not supposed to
use the same socket from more than one process (unless you use
WSADuplicateSocket(), in which case the docs specifically say that only
one will be flagged).
2) The check for "postmaster death" is moved into a separate select()
call after the main loop. The previous behaviour select():ed on the
postmaster pipe, while later explicitly saying "we do NOT check for
postmaster exit inside the loop".
The issue was that the code relies on the same select() call seeing both
the postmaster pipe *and* the pgstat pipe go away. This does not always
happen, and it appears that useing WSAEventSelect() makes it even more
common that it does not.
Since it's only called when the process exits, I don't think using a
separate select() call will have any significant impact on how the stats
collector works.
Magnus Hagander
Bruce Momjian [Mon, 12 Apr 2004 15:58:52 +0000 (15:58 +0000)]
Change psql \copy stdin/stdout to read from command input/output.
Add pstdin/pstdout to read from psql's stdin/stdout.
BACKWARD INCOMPATIBLE CHANGE
Bruce Momjian [Mon, 12 Apr 2004 03:22:20 +0000 (03:22 +0000)]
> > This update fixes a few small typos in names,
> > pronouns and formatting in the Russian FAQ.
Serguei Mokhov
Bruce Momjian [Sun, 11 Apr 2004 00:54:45 +0000 (00:54 +0000)]
Exit backend from SIGTERM or FATAL by simulating client EOF, rather than
calling proc_exit() directly. This should make SIGTERM more reliable.
Bruce Momjian [Sat, 10 Apr 2004 18:02:59 +0000 (18:02 +0000)]
Please find a small patch to fix the brain damage "century" and
"millennium" date part implementation in postgresql, both in the code
and the documentation, so that it conforms to the official definition.
If you do not agree with the official definition, please send your
complaint to "pope@vatican.org". I'm not responsible for them;-)
With the previous version, the centuries and millenniums had a wrong
number and started the wrong year. Moreover century number 0, which does
not exist in reality, lasted 200 years. Also, millennium number 0 lasted
2000 years.
If you want postgresql to have it's own definition of "century" and
"millennium" that does not conform to the one of the society, just give
them another name. I would suggest "pgCENTURY" and "pgMILLENNIUM";-)
IMO, if someone may use the options, it means that postgresql is used for
historical data, so it make sense to have an historical definition. Also,
I just want to divide the year by 100 or 1000, I can do that quite easily.
BACKWARD INCOMPATIBLE CHANGE
Fabien Coelho - coelho@cri.ensmp.fr
Bruce Momjian [Fri, 9 Apr 2004 18:03:13 +0000 (18:03 +0000)]
Remove libpgeasy and odbc doc reference in filelist.sgml --- removed to
gborg.
Dennis Bjorklund [Fri, 9 Apr 2004 06:49:35 +0000 (06:49 +0000)]
Translation updates
Dennis Bjorklund [Fri, 9 Apr 2004 05:54:01 +0000 (05:54 +0000)]
Translation updates
Bruce Momjian [Thu, 8 Apr 2004 23:00:55 +0000 (23:00 +0000)]
Magnus says new Win32 timezone library will not need special horology:
so remove regression result map line:
horology/win32=horology-no-DST-before-1970
Bruce Momjian [Wed, 7 Apr 2004 23:32:30 +0000 (23:32 +0000)]
Add SQL 2003 standards.
Bruce Momjian [Wed, 7 Apr 2004 22:02:03 +0000 (22:02 +0000)]
Remove bad URL.
Bruce Momjian [Wed, 7 Apr 2004 19:14:21 +0000 (19:14 +0000)]
Update:
< * Allow LOCALE on a per-column basis, default to ASCII
> * Allow locale to be set at database creation
> * Allow locale on a per-column basis, default to ASCII
> * Optimize locale to have minimal performance impact when not used (Peter E)
105d106
< * Optimize locale to have minimal performance impact when not used (Peter E)
111d111
< * Allow locale to be set at database creation
Bruce Momjian [Wed, 7 Apr 2004 18:52:26 +0000 (18:52 +0000)]
Push superuser check farther down in the if() statements to fix startup
crash with debug in log_statement patch.
Tom Lane [Wed, 7 Apr 2004 18:46:12 +0000 (18:46 +0000)]
Still another place to make the world safe for zero-column tables.
Per example from Jiang Wei.
Bruce Momjian [Wed, 7 Apr 2004 18:34:44 +0000 (18:34 +0000)]
Add:
> * Allow locale to be set at database creation
Bruce Momjian [Wed, 7 Apr 2004 18:31:59 +0000 (18:31 +0000)]
Update Darwin thread compile flags, and OS version info.
Bruce Momjian [Wed, 7 Apr 2004 18:30:59 +0000 (18:30 +0000)]
Update darwin OS version.
Tom Lane [Wed, 7 Apr 2004 18:17:25 +0000 (18:17 +0000)]
Extend set-operation planning to keep track of the sort ordering induced
by the set operation, so that redundant sorts at higher levels can be
avoided. This was foreseen a good while back, but not done. Per request
from Karel Zak.
Tom Lane [Wed, 7 Apr 2004 17:42:28 +0000 (17:42 +0000)]
build_subquery_pathkeys() was examining wrong copy of subquery target list,
causing it to fail to recognize the output ordering of subqueries that
contain set operations (UNION/INTERSECT/EXPECT). Per example from Karel Zak.