Josh Kupershmidt
d79d342eea
Add advisory locking to repack_one_table()
...
Avoids danger (or just pointlessness) of having someone run a
table-wide repack and an indexes-only repack of the same table
at the same time.
2013-06-22 08:41:41 -04:00
Josh Kupershmidt
62b5e4fb11
A few cosmetic fixes to pg_repack.c:
...
* fix old reference to --indexes-only
* trailing whitespace and indentation cleanup to match rest of code
* XXX note about improving advisory locking
2013-06-22 06:51:41 -04:00
Josh Kupershmidt
b804c150ac
Fix existing 'tablespace' regression test so it passes again.
...
Changes to repack_indexdef() had broken this test.
2013-06-22 06:47:06 -04:00
Josh Kupershmidt
f3fa2fa563
Fixes and cleanup of the new repack_index_swap():
...
* Make sure we don't crash if this function is fed a bogus OID
* rename idx1, idx2 variables for clarity
* tweak query against pg_class to specify reltype = 0
* CommandCounterIncrement() is probably unnecessary, removed
2013-06-21 20:58:54 -04:00
Josh Kupershmidt
ee23ec8ffd
Initial import of indexes-only building patch.
...
Patch from Beena Emerson.
2013-06-21 18:41:09 -04:00
Josh Kupershmidt
5b6a162996
Shuffle sanity checks into preliminary_checks().
...
This refactoring helps pave the way for online indexes-only
repacking. Patch by Beena Emerson.
2013-06-20 21:11:25 -04:00
Josh Kupershmidt
a942042215
Fix up the --help output for --jobs.
2013-06-18 19:45:05 -04:00
Josh Kupershmidt
29023206b5
Fix lock_exclusive()'s behavior during swap step.
...
Since we are not starting a new transaction in conn2 during the
swap step, we need to make sure that if our LOCK query is canceled
due to statement_timeout that conn2's transaction is not left in
a useless error state. Use SAVEPOINT and ROLLBACK TO SAVEPOINT to
avoid this problem.
2013-06-16 20:17:24 -04:00
Josh Kupershmidt
9c8d519415
Kludge to remove -lpam from LIBS in Makefiles.
...
Per Issue #7 from armanddp, it seems the RHEL/CentOS packages
of Postgres are built against libpam, which shows up in
the LIBS reported by pg_config. We don't actually need to
link in libpam for pg_repack, so manually remove it from
our LIBS. This helps a little bit for building on
RHEL/CentOS, though the issue of libpgport.a missing
on that platform still looms.
2013-05-23 20:31:56 -04:00
Josh Kupershmidt
95ce24c2a0
More sed tweaks to Makefile for portability.
...
The -E flag to specify extended regular expressions apparently is
not portable to all platforms, such as CentOS 4.5. Use an uglier
but hopefully more portable basic regular expression in Makefiles.
2013-05-21 21:45:47 -04:00
Josh Kupershmidt
dc31920616
Move regression tests from ./bin/ to ./regress/
2013-05-09 21:15:48 -04:00
Daniele Varrazzo
20dea46184
Merge remote-tracking branch 'piro/master'
2013-05-05 00:19:22 +01:00
Daniele Varrazzo
98d304712c
Merge branch 'funky-version-check'
...
Conflicts:
bin/expected/repack.out
bin/sql/repack.sql
2013-05-05 00:09:39 +01:00
Daniele Varrazzo
a561c924f7
Parse tablespace/where in parse_indexdef
...
Makes injecting the target tablespace much easier and fixes interaction
between tablespace and WITH/WHERE clauses.
Added tests to check the correct indexes definition.
2013-05-05 00:07:14 +01:00
Daniele Varrazzo
2b7e1b2f0c
Ignore regression tests output
2013-05-04 13:31:11 +01:00
Daniele Varrazzo
cc2abf4b25
Fixed tablespace assignment in index with WITH clause
...
Reported by Beena Emerson.
2013-05-02 23:32:30 +01:00
Josh Kupershmidt
c55c613e44
Update RENAME_REL macro to work with 9.3. We now need to pass the
...
"is_internal" boolean to this function; for our purposes it should
be acceptable to always pass true.
2013-04-23 21:32:30 -04:00
Daniele Varrazzo
f886e0dba6
Fixed --order-by broken by namespaces refactoring
...
Also added a regression test for it.
Bug and patch from Beena Emerson, thany you.
2013-04-22 11:19:56 +01:00
Daniele Varrazzo
109689586e
Fixed access to uninit'd mem in repack_indexdef
...
If the tablespace is the last token in the indexdef, skip_ident returns a
pointer *after* the term zero, so garbage may end up after the statement.
2013-04-22 00:48:53 +01:00
Daniele Varrazzo
52e7761343
Fixed doc formatting and dropped stale diagnostics entries
2013-04-18 02:49:56 +01:00
Daniele Varrazzo
fb07fad34a
Make sure to close the transactions after repack_one_table
...
If we exit early (e.g. checking the triggers) repack_cleanup() is not called
but we must close the transactions anyway.
2013-04-18 02:29:51 +01:00
Daniele Varrazzo
54ba3c19cd
Install plpgsql on test databases 8.3 and 8.4
...
Required by triggers tests
2013-04-18 01:32:46 +01:00
Daniele Varrazzo
a2138b6d7d
Ignore AFTER triggers sorting after z_repack_trigger
...
They are not a problem, and they fore after the BEFORE trigger anyway.
To be checked against more PostgreSQL versions.
2013-04-18 01:22:24 +01:00
Daniele Varrazzo
477fba884c
Ignore AFTER triggers sorting after z_repack_trigger
...
They are not a problem, and they fore after the BEFORE trigger anyway.
To be checked against more PostgreSQL versions.
2013-04-18 01:19:52 +01:00
Daniele Varrazzo
14c4d4653e
Make the version number arith without using bc
...
Not as available as I thought.
Can't use the 0 prefix to make the 3rd number optional as $(()) parses is as
octal, so only use the first 2 numbers.
Also fixed collate test: not available on PG 9.0.
2013-04-18 01:10:22 +01:00
Daniele Varrazzo
dd06f25930
Tests on COLLATE only run on PG versions supporting it
2013-04-18 00:34:44 +01:00
Daniele Varrazzo
c314cbda75
Check PostgreSQL version number as number in the makefile
...
Not entirely happy about the solution but I like the uniform tests.
2013-04-18 00:29:23 +01:00
Daniele Varrazzo
22762fce28
Fixed query for PG 8.3
...
The AS keyword was required.
2013-04-17 22:08:37 +01:00
Daniele Varrazzo
db40e71abc
Fixed query for PG 8.4
...
Posgtres cannot find a cast rule.
2013-04-17 22:08:24 +01:00
Daniele Varrazzo
3d0b02c654
Try to repack all tables with pkey, not only the ones with ckey
...
This is consistent with --no-order not been required anymore.
2013-04-17 18:56:50 +01:00
Daniele Varrazzo
b3304b8a69
Merge branch 'logging-cleanup'
2013-04-17 18:36:23 +01:00
Daniele Varrazzo
08a8c943e5
Logging the table we are working on at info level
2013-04-17 18:35:54 +01:00
Daniele Varrazzo
5773c75b58
Using elog instead of printf to report what database we are on
...
I know the ... is pretty but it messes up with warnings etc. By the way there
was a \n so the skipped part wasn't even going on the same line.
2013-04-17 18:35:49 +01:00
Daniele Varrazzo
4a3f42ab70
Dropped unneeded error check
...
if pgut_execute fails it bails out.
2013-04-17 18:11:34 +01:00
Daniele Varrazzo
2335a4da82
Dropped redundant check for missing schema
...
If the schema is missing we have already stopped trying to check
the version numbers above.
2013-04-17 18:11:34 +01:00
Daniele Varrazzo
700a1a6c48
More explicit error message if the version functions are not found
2013-04-17 18:11:33 +01:00
Daniele Varrazzo
0e74882429
Had to shorten the tablespace metavar
...
In the rst docs two spaces are required between option and doc.
2013-04-17 09:17:35 +01:00
Daniele Varrazzo
42c65d16f8
Merge branch 'change-tablespace'
...
Conflicts:
bin/pg_repack.c
doc/pg_repack.rst
2013-04-17 09:07:09 +01:00
Daniele Varrazzo
7617e07f10
Options sorted in a slightly more rational order
...
--no-order now is almost useless, but list it next to --order-by.
--jobs only specifies how to do something, not what to do. On the
same basis probably --no-analyze should be pushed further up.
2013-04-17 01:44:50 +01:00
Daniele Varrazzo
8efbd9e1c6
Imply --no-order for non-clustered tables
...
--no-order can still be specified to VACUUM FULL a clustered tables
(not so useful I guess...)
Fixes issue #6 .
2013-04-17 01:42:22 +01:00
Daniele Varrazzo
1d62d8d0c5
More helpful error messages in case of conflicting triggers
...
Closes issue #5 .
2013-04-17 00:57:01 +01:00
Daniele Varrazzo
127d5cbfb2
Added missing entries to the pg_repack 1.2 changes
2013-04-16 23:50:52 +01:00
Daniele Varrazzo
b6bd078e92
Added documentation for --tablespace and --moveidx
2013-04-16 23:39:51 +01:00
Daniele Varrazzo
d98a14bb55
Fixed index definition tokenization
...
In the previous commit skip_const was going ahead the space thus removing the
starting quote. Also fixed (and tested) trailing part after the tablespace
name, e.g. the WHERE clause.
2013-04-16 23:23:26 +01:00
Daniele Varrazzo
83fdb2a9e0
Added implementation for --moveidx
...
Note: if original namespace is "foo bar", repack_indexdef gives a bad
result. This is weird as apparently skip_ident can deal with spaces in
a quoted identifier. Committing as I'm going home, will deal with that
later.
2013-04-16 22:42:23 +01:00
Daniele Varrazzo
43dfe229c9
Added check for target tablespace existence
2013-04-16 22:42:23 +01:00
Daniele Varrazzo
a6e50515ce
Merge branch 'master' into change-tablespace
2013-04-16 22:40:43 +01:00
Daniele Varrazzo
e9339f44ea
Merge branch 'issue-3'
...
Conflicts:
bin/expected/repack.out
bin/sql/repack.sql
2013-04-16 22:36:40 +01:00
Daniele Varrazzo
c542bf2641
Added tests for the namespace change feature
...
Currently not passing as --moveidx not implemented yet.
2013-04-16 18:33:45 +01:00
Daniele Varrazzo
6488ecabd2
Added --moveidx command line option
...
The option is only parsed, not implemented yet.
2013-04-16 18:32:46 +01:00