forked from bucardo/bucardo
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTODO
100 lines (90 loc) · 4.9 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
TODO list for Bucardo
=====================
Version 5
---------
* Fix 'error loop' escaping bug from mailing list
https://github.com/bucardo/bucardo/issues/13
Version 5.1
-----------
* Get Drizzle tests verified as working
https://github.com/bucardo/bucardo/issues/16
* Get bucardo-report working again
https://github.com/bucardo/bucardo/issues/17
Future
------
These range the gamut from wildly speculative ideas to must-have features.
- When a serialization error is presented, provide more details such as last table updated.
- Optimize bucardo_purge_delta to handle case of a single expected target (thus no group by)
- During the initial validate_sync check, gather the list of errors and throw a single exception,
rather than aborting on the (for example) first table not found on the target.
- Make "bucardo remote table public.some_sequence" work or at least throw good error message
- Add a GUC to disable truncate triggers (or perhaps just application of truncations)
- Troubleshoot sync.onetimecopy=2: there are reports of it not working
- Look into error when sources have different column orders
- Write tests for the "dbdsn" feature
- Disable constraints on large data loads
- Allow 'bucardo update relgroup' to work
- Use something more specific than txntime, which is not unique enough
- Allow bucardo add table ... --relgroup=foo to work, or at least throw an error.
- Remove the need for pl/perl entirely: put all logic into ./bucardo
- Allow a new type of trigger that only indicates if a table has changed or not.
Rather than storing a PK, we only note "changed". This would allow fullcopy tables
inside of a sync to run or just get skipped.
- Make the listen/notify system cleaner, maybe break into mcp/ctl/kid streams rather than generic 'bucardo'
- Create a new "sourceonly" type what can issue deltas but not receive them
- Make sure pkonly and makedelta=xx work everywhere, e.g. add/update relation/relgroup
- Allow syncs to be grouped together to allow for a single kicksync notification
- Allow columns A.varchar(x) and B.varchar(x+y) to be equivalent in the initial
validate_sync check if B is only a target
- Allow skipping of some or all of the initial schema checks; currently
necessary but time consuming for large numbers of tables/servers
- Throttle outgoing mail; such as the flood when things go wrong
- Add column as well as table-level SQL comments to the bucardo schema
- Merge bucardo_kick_%sync into a single trigger and function per table that
does 1+N NOTIFYs inside of it
- Allow one log file per sync
- Handle the case where newly created databases do not have a public schema
- Add DB2 as a target
- Do table locking up front for fullcopy syncs, to reduce deadlock windows
- Allow creation of schema on first fullcopy as an option
- Same as above for pushdelta, but auto switch to onetimecopy after!
- Remove the gotos from the pl/perlu code.
- Use symlinks for long socket directories during testing, as DBD::Pg does.
- Fix the insert/foreign key problem for conflict resolution.
- Death-level custom code hooks
- Better conflict example in test suite, uses database handles
- Allow more data types for pkey on goats
- Handle partitioned tables
- Allow notification emails to be regex sorted, e.g. serialization warnings
- Address all XXX and TODO inside Bucardo.pm
- Add a pause mode
- Add exception code for DELETE
- I8n all messages/docs/etc.
- Allow targets to be hard-linked: nobody goes on until everyone has finished
- Support large objects
- Support system tables (Postgres 12.0?)
- Check for superuser on startup, to prevent errors that only show when a KID tries something.
- Add a flag that allows for table structure checking before each sync
- Make a Bucardo bundle for CPAN-like fun
- Readonly slaves: trigger/rule to prevent with good message
- bucardo_help() function to explain all
- Handle non-orderable data types such as polygons
- Put this list into a bug tracker
- Consider failover strategies
- Log validate_sync changes somewhere, add rollback statements
- Add support for manual DDL changes
- Add support for automatic DDL changes
- Cascading slaves: makedelta should create infrastructure as necessary
- Use polling not sleep for loop notifications
- Remove large src_code sections from the kid output when they die
- Force to C locale until we get i18n in place
- Use C triggers for the delta stuff if we can (and time them!)
- Find alternate ways for the kids to lock the tables other than $force_lock_file
- Options to allow Bucardo to continue with unaffected syncs if a target is dead
- Mongo: fix escaped data from COPY TO STDOUT
- Flatfiles: same escaped data as above for non-PG output
- Add readonly slaves:
Need to design a system to make slaves optionally "readonly". This will most
likely be accomplished through use of triggers. There should be a simple
interface to toggle the read-only on and off per database, and perhaps per
sync. Need to consider making non-tracked tables read-only as well.