Josh Kupershmidt
bebe6ffb2b
Factor out advisory locking code into advisory_lock()
...
Also, some further small fixes of error messages, comments,
marking dubious kludges (e.g. strchr() to determine schema name).
2013-06-22 09:35:19 -04:00
Josh Kupershmidt
673eac7b42
Change 'have_error' to 'ret' for simplicity.
2013-06-22 08:59:47 -04:00
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
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
dc31920616
Move regression tests from ./bin/ to ./regress/
2013-05-09 21:15:48 -04: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
cc2abf4b25
Fixed tablespace assignment in index with WITH clause
...
Reported by Beena Emerson.
2013-05-02 23:32:30 +01: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
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
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
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
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
Daniele Varrazzo
6710e514db
Added --namespace option to set the namespace of repacked tables
...
Bumped version number to enforce extension re-creation as the SQL has
been modified.
Current limitations:
- Check for namespace existence: on error temp objects are left around
- What happens to the indexes?
- Tests needed.
- Should the default be the GUC default_tablespace instead of pg_default?
This is actually an original pg_repack shortcoming, not a regression.
2013-02-21 17:20:54 +00:00
Daniele Varrazzo
89031f9cc5
Dropped unused indexes info
2013-02-21 17:20:28 +00:00
Daniele Varrazzo
f9dc02191d
Dropped bogus check and unused parameters allocation
2013-02-21 15:06:39 +00:00
Josh Kupershmidt
7a31f4fbf6
comment typofix.
2013-02-20 20:26:48 -07:00
Josh Kupershmidt
f551b56f1a
Merge branch 'master' into concurrent_indexes.
...
Conflicts:
bin/pg_repack.c
2012-12-14 22:17:36 -07:00
Josh Kupershmidt
7213e2fe7b
Use CLEARPGRES() macro to call PQclear() and set res to NULL.
...
This simplifies some of the error handling blocks, as now
we can unconditionally use this macro without worrying about multiple
PQclear() calls causing a double-free().
Per discussion with Daniele.
2012-12-14 20:13:23 -07:00
Josh Kupershmidt
2e4ac733c1
Fix up buggy initialization code for poll() and select().
...
Also some logging and variable name cleanup.
2012-12-14 18:49:00 -07:00
Josh Kupershmidt
d43ff3cd24
Add description of --jobs to the docs. Also, add missing newline in --help output.
2012-12-14 18:49:00 -07:00
Josh Kupershmidt
4f25c26284
restore the warning message about invalid indexes, to match old behavior and pass installcheck.
2012-12-14 18:49:00 -07:00
Josh Kupershmidt
a1821e3dcb
Several fixes for concurrent index builds:
...
* Use poll() if it is available, or select() otherwise, to
efficiently wait on index builds in worker queries to finish.
* fix off-by-one error when initially assigning workers
* move PQsetnonblocking() calls to setup_workers()
2012-12-14 18:49:00 -07:00