OSDN Git Service

pg-rex/syncrep.git
25 years agooptimizer rename
Bruce Momjian [Mon, 15 Feb 1999 05:50:02 +0000 (05:50 +0000)]
optimizer rename

25 years agooptimizer rename
Bruce Momjian [Mon, 15 Feb 1999 05:28:10 +0000 (05:28 +0000)]
optimizer rename

25 years agootherrels is now unjoined_rels
Bruce Momjian [Mon, 15 Feb 1999 05:21:12 +0000 (05:21 +0000)]
otherrels is now unjoined_rels

25 years agooptimizer rename
Bruce Momjian [Mon, 15 Feb 1999 03:59:28 +0000 (03:59 +0000)]
optimizer rename

25 years agoRemove duplicate geqo functions, and more optimizer cleanup
Bruce Momjian [Mon, 15 Feb 1999 03:22:37 +0000 (03:22 +0000)]
Remove duplicate geqo functions, and more optimizer cleanup

25 years agoReplace non-idiomatic nconc(x, lcons(y, NIL)) with lappend(x, y).
Tom Lane [Mon, 15 Feb 1999 02:04:58 +0000 (02:04 +0000)]
Replace non-idiomatic nconc(x, lcons(y, NIL)) with lappend(x, y).

25 years agoFix a number of places that made faulty assumptions about
Tom Lane [Mon, 15 Feb 1999 01:06:59 +0000 (01:06 +0000)]
Fix a number of places that made faulty assumptions about
what is_opclause will accept.

25 years agoFix optimizer coredump with unary-operator WHERE clauses.
Tom Lane [Sun, 14 Feb 1999 22:24:25 +0000 (22:24 +0000)]
Fix optimizer coredump with unary-operator WHERE clauses.
A test case is:
create table linetab (x line);
select * from linetab where ?| x;
which coredumps in 6.4.2 and current sources.

25 years agooptimizer cleanup.
Bruce Momjian [Sun, 14 Feb 1999 05:27:12 +0000 (05:27 +0000)]
optimizer cleanup.

25 years agooptimizer rename.
Bruce Momjian [Sun, 14 Feb 1999 05:14:15 +0000 (05:14 +0000)]
optimizer rename.

25 years agoOptimizer rename.
Bruce Momjian [Sun, 14 Feb 1999 04:57:02 +0000 (04:57 +0000)]
Optimizer rename.

25 years agoChange my-function-name-- to my_function_name, and optimizer renames.
Bruce Momjian [Sat, 13 Feb 1999 23:22:53 +0000 (23:22 +0000)]
Change my-function-name-- to my_function_name, and optimizer renames.

25 years agoFix offset of one for date_part(timespan) when given arguments of
Thomas G. Lockhart [Sat, 13 Feb 1999 05:34:24 +0000 (05:34 +0000)]
Fix offset of one for date_part(timespan) when given arguments of
 decade, century, or millenium.

25 years agoRemove equivalence between datetime and float8. Led to nothin' but trouble.
Thomas G. Lockhart [Sat, 13 Feb 1999 05:25:54 +0000 (05:25 +0000)]
Remove equivalence between datetime and float8. Led to nothin' but trouble.

25 years agoChange #if FALSE to #if NOT_USED to avoid port problems.
Thomas G. Lockhart [Sat, 13 Feb 1999 04:25:01 +0000 (04:25 +0000)]
Change #if FALSE to #if NOT_USED to avoid port problems.
Fix problem with date_part() for timespan (had an offset of one)
 when given decade, century, and millenium as arguments.
 Reported by Ricardo J.C.Coelho.

25 years agoAdd routines to convert between int8 and text/varchar types.
Thomas G. Lockhart [Sat, 13 Feb 1999 04:22:34 +0000 (04:22 +0000)]
Add routines to convert between int8 and text/varchar types.
Change #if FALSE to #if NOT_USED to avoid port problems.
Fix up pg_indent weirdness with function argument declarations.

25 years agoAdd routines to convert between int8 and text/varchar types.
Thomas G. Lockhart [Sat, 13 Feb 1999 04:19:54 +0000 (04:19 +0000)]
Add routines to convert between int8 and text/varchar types.
Fix output type for int8out, but I don't think it matters.

25 years agoInclude some Julian date declarations to share between various date/time
Thomas G. Lockhart [Sat, 13 Feb 1999 04:15:33 +0000 (04:15 +0000)]
Include some Julian date declarations to share between various date/time
 modules. Used to be in dt.c I think.

25 years agoRe-enable arch-dev.sgml now that it has new information from Stefan's
Thomas G. Lockhart [Sat, 13 Feb 1999 03:54:51 +0000 (03:54 +0000)]
Re-enable arch-dev.sgml now that it has new information from Stefan's
 Master's Thesis.

25 years agoRequire complete tagging in emacs hints at bottom of file.
Thomas G. Lockhart [Sat, 13 Feb 1999 03:54:00 +0000 (03:54 +0000)]
Require complete tagging in emacs hints at bottom of file.

25 years agoInclude chapter on SQL language elements (keywords, etc).
Thomas G. Lockhart [Sat, 13 Feb 1999 03:52:46 +0000 (03:52 +0000)]
Include chapter on SQL language elements (keywords, etc).
Should merge with or complement Stefan's Master's Thesis intro to SQL.

25 years agoDescribe the date/time parsing rules.
Thomas G. Lockhart [Sat, 13 Feb 1999 03:42:10 +0000 (03:42 +0000)]
Describe the date/time parsing rules.
Include specific information on the supported time zones.
 It's a really big table, so maybe it should go into an appendix instead.

25 years agoAdd Stefan Simkovics' Master's Thesis.
Thomas G. Lockhart [Sat, 13 Feb 1999 03:38:46 +0000 (03:38 +0000)]
Add Stefan Simkovics' Master's Thesis.

25 years agoSubstitute great info from Stefan Simkovics' Master's Thesis.
Thomas G. Lockhart [Sat, 13 Feb 1999 03:37:54 +0000 (03:37 +0000)]
Substitute great info from Stefan Simkovics' Master's Thesis.
Still need to add some acknowledgements at the top of the doc;
 already have full info in the bibliography but since the original is
 being spread across the existing docs we should also mention things
 locally.

25 years agoMinor markup changes for the recent TEMP TABLE info.
Thomas G. Lockhart [Sat, 13 Feb 1999 03:33:50 +0000 (03:33 +0000)]
Minor markup changes for the recent TEMP TABLE info.
Docs should build now...

25 years agoMore complete info from Oliver Elphick.
Thomas G. Lockhart [Sat, 13 Feb 1999 03:32:43 +0000 (03:32 +0000)]
More complete info from Oliver Elphick.

25 years agoOptimizer cleanup.
Bruce Momjian [Fri, 12 Feb 1999 17:25:05 +0000 (17:25 +0000)]
Optimizer cleanup.

25 years agoJoinPath -> NestPath for nested loop.
Bruce Momjian [Fri, 12 Feb 1999 06:43:53 +0000 (06:43 +0000)]
JoinPath -> NestPath for nested loop.

25 years agoFix optimizer and make faster.
Bruce Momjian [Fri, 12 Feb 1999 05:57:08 +0000 (05:57 +0000)]
Fix optimizer and make faster.

25 years agooptimizer update
Bruce Momjian [Fri, 12 Feb 1999 02:37:52 +0000 (02:37 +0000)]
optimizer update

25 years agoRemove Perl module's unnecessary dependence on libpq-int.h.
Tom Lane [Thu, 11 Feb 1999 23:25:16 +0000 (23:25 +0000)]
Remove Perl module's unnecessary dependence on libpq-int.h.

25 years agoOptimizer cleanups.
Bruce Momjian [Thu, 11 Feb 1999 21:05:28 +0000 (21:05 +0000)]
Optimizer cleanups.

25 years agoOptimizer cleanup.
Bruce Momjian [Thu, 11 Feb 1999 17:21:51 +0000 (17:21 +0000)]
Optimizer cleanup.

25 years agooptimizer cleanup
Bruce Momjian [Thu, 11 Feb 1999 17:03:17 +0000 (17:03 +0000)]
optimizer cleanup

25 years agoOptimizer cleanup.
Bruce Momjian [Thu, 11 Feb 1999 17:00:49 +0000 (17:00 +0000)]
Optimizer cleanup.

25 years agoMore optimization.
Bruce Momjian [Thu, 11 Feb 1999 16:09:41 +0000 (16:09 +0000)]
More optimization.

25 years agoMore optimizer speedups.
Bruce Momjian [Thu, 11 Feb 1999 14:59:09 +0000 (14:59 +0000)]
More optimizer speedups.

25 years agooptimizer cleanup
Bruce Momjian [Thu, 11 Feb 1999 05:29:08 +0000 (05:29 +0000)]
optimizer cleanup

25 years agoOptimizer fix for samekeys() and cost fixes for longer optimizer keys.
Bruce Momjian [Thu, 11 Feb 1999 04:08:44 +0000 (04:08 +0000)]
Optimizer fix for samekeys() and cost fixes for longer optimizer keys.

25 years agoInclude <varargs.h> on SunOS. (Does any other platform need it??)
Tom Lane [Thu, 11 Feb 1999 01:36:55 +0000 (01:36 +0000)]
Include <varargs.h> on SunOS.  (Does any other platform need it??)

25 years agoOptmizer cleanup
Bruce Momjian [Wed, 10 Feb 1999 21:02:50 +0000 (21:02 +0000)]
Optmizer cleanup

25 years agoUpdate find_typedefs for bsdi 4.0.
Bruce Momjian [Wed, 10 Feb 1999 17:14:32 +0000 (17:14 +0000)]
Update find_typedefs for bsdi 4.0.

25 years agoRename Path.keys to Path.pathkeys. Too many 'keys' used for other things.
Bruce Momjian [Wed, 10 Feb 1999 03:52:54 +0000 (03:52 +0000)]
Rename Path.keys to Path.pathkeys.  Too many 'keys' used for other things.

25 years agoRename Temp to Noname for noname tables.
Bruce Momjian [Tue, 9 Feb 1999 17:03:14 +0000 (17:03 +0000)]
Rename Temp to Noname for noname tables.

25 years agoOptimizer fix for samekeys.
Bruce Momjian [Tue, 9 Feb 1999 06:30:45 +0000 (06:30 +0000)]
Optimizer fix for samekeys.

25 years agoMajor optimizer improvement for joining a large number of tables.
Bruce Momjian [Tue, 9 Feb 1999 03:51:42 +0000 (03:51 +0000)]
Major optimizer improvement for joining a large number of tables.

25 years agoAdded LIMIT/OFFSET functionality including new regression test for it.
Jan Wieck [Mon, 8 Feb 1999 14:14:32 +0000 (14:14 +0000)]
Added LIMIT/OFFSET functionality including new regression test for it.

Removed CURRENT keyword for rule queries and changed rules regression
accordingly. CURRENT has beed announced to disappear in v6.5.

Jan

25 years agoOptimizer cleanup.
Bruce Momjian [Mon, 8 Feb 1999 04:29:25 +0000 (04:29 +0000)]
Optimizer cleanup.

25 years agopg_dump -d or -D didn't quote special characters in INSERT data
Tom Lane [Mon, 8 Feb 1999 01:46:28 +0000 (01:46 +0000)]
pg_dump -d or -D didn't quote special characters in INSERT data
correctly.  -D had problems with tables with inherited fields, also.

25 years agoRevert some changes from the INTERSECT/EXPECT patch that broke
Jan Wieck [Mon, 8 Feb 1999 01:39:46 +0000 (01:39 +0000)]
Revert some changes from the INTERSECT/EXPECT patch that broke
rule system semantics by having Var nodes referenced across multiple
parsetrees when rules split them.

Added more tests to the rules regression test.

The code in question resulted from v6.3 based development and was
a little careless applied to the v6.5 source tree.

Jan

25 years agoSimplify scanstr(), fix broken octal-escape code.
Tom Lane [Sun, 7 Feb 1999 23:59:59 +0000 (23:59 +0000)]
Simplify scanstr(), fix broken octal-escape code.

25 years agoSimplify lexer's rules for string constants, eliminate potential buffer overrun.
Tom Lane [Sun, 7 Feb 1999 23:58:52 +0000 (23:58 +0000)]
Simplify lexer's rules for string constants, eliminate potential buffer overrun.

25 years agoInclude -lcrypt when needed to link libpgtcl.so and plpgsql.so
Tom Lane [Sun, 7 Feb 1999 22:10:47 +0000 (22:10 +0000)]
Include -lcrypt when needed to link libpgtcl.so and plpgsql.so

25 years agoChanged manpages for create_rule/drop_rule to the semantics
Jan Wieck [Sun, 7 Feb 1999 22:10:10 +0000 (22:10 +0000)]
Changed manpages for create_rule/drop_rule to the semantics
of the rule system of v6.4 and descendants.

Jan

25 years agoAdd PQresStatus() function to avoid direct access to pgresStatus[] array,
Tom Lane [Sun, 7 Feb 1999 22:08:54 +0000 (22:08 +0000)]
Add PQresStatus() function to avoid direct access to pgresStatus[] array,
making life easier for Windoids...

25 years agoClean up some minor compile warnings.
Tom Lane [Sun, 7 Feb 1999 22:07:02 +0000 (22:07 +0000)]
Clean up some minor compile warnings.

25 years agoCorrect definition of srandom() --- it takes unsigned int not int.
Tom Lane [Sun, 7 Feb 1999 22:04:57 +0000 (22:04 +0000)]
Correct definition of srandom() --- it takes unsigned int not int.

25 years agoNew gram.c after modification of gram.y
Jan Wieck [Sun, 7 Feb 1999 19:04:59 +0000 (19:04 +0000)]
New gram.c after modification of gram.y

Jan

25 years agoReenabled parentheses for grouping multiple rule actions and
Jan Wieck [Sun, 7 Feb 1999 19:02:20 +0000 (19:02 +0000)]
Reenabled parentheses for grouping multiple rule actions and
added this syntax to rules regression test so it will show up
if someone breaks it again.

Jan

25 years agoChanged ExecConstraints() and ExecRelCheck() to cache the constraints
Jan Wieck [Sun, 7 Feb 1999 16:17:14 +0000 (16:17 +0000)]
Changed ExecConstraints() and ExecRelCheck() to cache the constraints
qualification expression trees in the execution state. Prevents from
memory exhaustion on INSERT, UPDATE or COPY to tables that have CHECK
constraints. Speedup against the variant using freeObject() is more than
factor 2.

Jan

25 years agoMissing semicolon in last fix :-}
Jan Wieck [Sun, 7 Feb 1999 14:20:11 +0000 (14:20 +0000)]
Missing semicolon in last fix :-}

Jan

25 years agoOne more fix to QuerySnapshot usage in ExecutorStart(). Maybe
Jan Wieck [Sun, 7 Feb 1999 13:54:58 +0000 (13:54 +0000)]
One more fix to QuerySnapshot usage in ExecutorStart(). Maybe
current QuerySnapshot could be NULL.

Jan

25 years agoFixed problem with multiple portals shown up in portals_p2 regression
Jan Wieck [Sun, 7 Feb 1999 13:37:56 +0000 (13:37 +0000)]
Fixed problem with multiple portals shown up in portals_p2 regression
test after new AllocSet code.

Activated optimal AllocSet blocksize and chunk limit.

Jan

25 years agoFix bracketing error in CaseExpr code
Tom Lane [Sun, 7 Feb 1999 03:02:21 +0000 (03:02 +0000)]
Fix bracketing error in CaseExpr code

25 years agoAllow psql to do \p\g. Ingres does it, why not us?
Bruce Momjian [Sun, 7 Feb 1999 02:56:53 +0000 (02:56 +0000)]
Allow psql to do \p\g.  Ingres does it, why not us?

25 years agoAdd equality checking for T_Query so that we don't get
Tom Lane [Sun, 7 Feb 1999 00:52:12 +0000 (00:52 +0000)]
Add equality checking for T_Query so that we don't get
complaints in UNION regress test.  Probably still need some more node
types to be handled here, but I'm done for the day...

25 years agoAdd floating-point support to our emulation of snprintf
Tom Lane [Sat, 6 Feb 1999 21:51:03 +0000 (21:51 +0000)]
Add floating-point support to our emulation of snprintf
so that EXPLAIN works again.

25 years agoFix silly typo causing SELECT INTO TABLE to sometimes be
Tom Lane [Sat, 6 Feb 1999 20:28:11 +0000 (20:28 +0000)]
Fix silly typo causing SELECT INTO TABLE to sometimes be
treated as SELECT INTO TEMP TABLE.

25 years agoOptimizer cleanup.
Bruce Momjian [Sat, 6 Feb 1999 17:29:30 +0000 (17:29 +0000)]
Optimizer cleanup.

25 years agoNew alloc set code using a memory block pool for small allocations.
Jan Wieck [Sat, 6 Feb 1999 16:50:34 +0000 (16:50 +0000)]
New alloc set code using a memory block pool for small allocations.

Jan

25 years agooptimizer cleanup
Bruce Momjian [Fri, 5 Feb 1999 20:34:11 +0000 (20:34 +0000)]
optimizer cleanup

25 years agoOptimizer cleanup.
Bruce Momjian [Fri, 5 Feb 1999 19:59:31 +0000 (19:59 +0000)]
Optimizer cleanup.

25 years agoFix for returning stack pointer from selectivity, from Bernard Frankpitt.
Bruce Momjian [Fri, 5 Feb 1999 17:47:29 +0000 (17:47 +0000)]
Fix for returning stack pointer from selectivity, from Bernard Frankpitt.

25 years agoReverse out const to libpq interface from D'Arcy.
Bruce Momjian [Fri, 5 Feb 1999 04:25:55 +0000 (04:25 +0000)]
Reverse out const to libpq interface from D'Arcy.

25 years agoFix silly typo in prune_joinrel
Tom Lane [Fri, 5 Feb 1999 03:43:05 +0000 (03:43 +0000)]
Fix silly typo in prune_joinrel

25 years agoOptimizer cleanups.
Bruce Momjian [Thu, 4 Feb 1999 23:19:53 +0000 (23:19 +0000)]
Optimizer cleanups.

25 years agoUpdate optimizer comments.
Bruce Momjian [Thu, 4 Feb 1999 19:20:12 +0000 (19:20 +0000)]
Update optimizer comments.

25 years agoLarge object write-into-middle fix from Tatsuo Ishii.
Bruce Momjian [Thu, 4 Feb 1999 14:52:00 +0000 (14:52 +0000)]
Large object write-into-middle fix from Tatsuo Ishii.

25 years agoFrom: Michael Meskes <Michael.Meskes@usa.net>
Marc G. Fournier [Thu, 4 Feb 1999 04:58:05 +0000 (04:58 +0000)]
From: Michael Meskes <Michael.Meskes@usa.net>

+ Tue Feb  2 07:40:52 CET 1999
+
+       - Brought preproc.y in sync again with gram.y.
+       - Set ecpg version to 2.4.9
+

25 years agoConst fixes from D'Arcy.
Bruce Momjian [Thu, 4 Feb 1999 03:20:39 +0000 (03:20 +0000)]
Const fixes from D'Arcy.

25 years agoMore optimizer cleanups.
Bruce Momjian [Thu, 4 Feb 1999 03:19:11 +0000 (03:19 +0000)]
More optimizer cleanups.

25 years agoMore optimizer renaming HInfo -> HashInfo.
Bruce Momjian [Thu, 4 Feb 1999 01:47:02 +0000 (01:47 +0000)]
More optimizer renaming HInfo -> HashInfo.

25 years agoCleanup of source files where 'return' or 'var =' is alone on a line.
Bruce Momjian [Wed, 3 Feb 1999 21:18:02 +0000 (21:18 +0000)]
Cleanup of source files where 'return' or 'var =' is alone on a line.

25 years agoThe libpq function PQfnumber does not handle case-insensitive
Bruce Momjian [Wed, 3 Feb 1999 20:19:10 +0000 (20:19 +0000)]
The libpq function PQfnumber does not handle case-insensitive
comparisons correctly. The psql monitor converts all table and field
names to lower case. If the PQfnumber function is called with a mixed
case name, it will always return -1.

Bahman Rafatjoo

25 years agoOptimizer rename ClauseInfo -> RestrictInfo. Update optimizer README.
Bruce Momjian [Wed, 3 Feb 1999 20:15:53 +0000 (20:15 +0000)]
Optimizer rename ClauseInfo -> RestrictInfo.  Update optimizer README.

25 years agoSort node for ORDER BY is suppressed if choosen index scan will
Jan Wieck [Wed, 3 Feb 1999 19:31:24 +0000 (19:31 +0000)]
Sort node for ORDER BY is suppressed if choosen index scan will
allways present tuples in the requested order.

Jan

25 years agoModify int8 to not depend on sscanf(), and fix configure's test
Tom Lane [Wed, 3 Feb 1999 00:18:53 +0000 (00:18 +0000)]
Modify int8 to not depend on sscanf(), and fix configure's test
for int8 support.  configure now checks only snprintf() for int8 support,
not sprintf and sscanf as it used to.  The reason for doing this is that
if we are supplying our own snprintf code (which does handle long long int),
we now only need working long long support in the compiler not in the
platform's C library.  I have verified that int8 now passes regression test
on HPUX 9, and I think it should work on SunOS 4.1.* and other older
platforms if gcc is used.

25 years agoSET_ARGS cleanup
Bruce Momjian [Tue, 2 Feb 1999 23:53:26 +0000 (23:53 +0000)]
SET_ARGS cleanup

25 years agoMake GEQO use dependent on table and index count.
Bruce Momjian [Tue, 2 Feb 1999 20:30:18 +0000 (20:30 +0000)]
Make GEQO use dependent on table and index count.

25 years agoOK I found it,
Bruce Momjian [Tue, 2 Feb 1999 19:20:54 +0000 (19:20 +0000)]
OK I found it,
I search in the planner for the '\xFF' appending.
Finally I found in MakeIndexable() in gram.y

Attach a patch which removes the "<=" test in USE_LOCALE,
might make some queries a bit slower for us "locale-heads",
BUT correct result is more important.

        regards,
--
-----------------
Göran Thyni

25 years agoAdd missing mb files.
Bruce Momjian [Tue, 2 Feb 1999 19:04:43 +0000 (19:04 +0000)]
Add missing mb files.

25 years agoIncluded patches make some enhancements to the multi-byte support.
Bruce Momjian [Tue, 2 Feb 1999 18:51:40 +0000 (18:51 +0000)]
Included patches make some enhancements to the multi-byte support.

o allow to use Big5 (a Chinese encoding used in Taiwan) as a client
  encoding. In this case the server side encoding should be EUC_TW

o add EUC_TW and Big5 test cases to the regression and the mb test
  (contributed by Jonah Kuo)

o fix mistake in include/mb/pg_wchar.h. An encoding id for EUC_TW was
  not correct (was 3 and now is 4)

o update documents (doc/README.mb and README.mb.jp)

o update psql helpfile (bin/psql/psqlHelp.h)

--
Tatsuo Ishii
t-ishii@sra.co.jp

25 years agopsql help fix.
Bruce Momjian [Tue, 2 Feb 1999 18:41:17 +0000 (18:41 +0000)]
psql help fix.

25 years agoFix for psql help create table.
Bruce Momjian [Tue, 2 Feb 1999 18:39:23 +0000 (18:39 +0000)]
Fix for psql help create table.

25 years agoFix create_rule is->as.
Bruce Momjian [Tue, 2 Feb 1999 17:46:17 +0000 (17:46 +0000)]
Fix create_rule is->as.

25 years agoFixed failed assertion happening in multiple action rules
Jan Wieck [Tue, 2 Feb 1999 12:57:51 +0000 (12:57 +0000)]
Fixed failed assertion happening in multiple action rules
when parsestate in makeRangeTable() already contains an
opened p_target_relation.

Jan

25 years agoAdd TEMP tables/indexes. Add COPY pfree(). Other cleanups.
Bruce Momjian [Tue, 2 Feb 1999 03:45:56 +0000 (03:45 +0000)]
Add TEMP tables/indexes.  Add COPY pfree().  Other cleanups.

25 years agoFixed growing of backend due to not pfree()'d data on COPY FROM
Jan Wieck [Mon, 1 Feb 1999 20:25:55 +0000 (20:25 +0000)]
Fixed growing of backend due to not pfree()'d data on COPY FROM

Fixed growing of backend if BEFORE DELETE trigger returns heap tuple
different from trigtuple.

Jan

25 years agoInitialize es_snapshot.
Vadim B. Mikheev [Mon, 1 Feb 1999 13:33:27 +0000 (13:33 +0000)]
Initialize es_snapshot.

25 years agoTighten coding in samekeys(). Pretty braindead change,
Tom Lane [Mon, 1 Feb 1999 04:20:50 +0000 (04:20 +0000)]
Tighten coding in samekeys().  Pretty braindead change,
but it saves almost 10% of the runtime in Charles Hornberger's optimizer
example, so what the heck ...