In LogMinerStreamingChangeEventSource, the `startScn` variable is used
as an exclusive lower bound for log mining sessions. The meaning of this
variable was a little muddled, sometimes (incorrectly) being considered
an inclusive lower bound. This PR aims to rectify that and avoid future
confusion on the matter.
* finish renaming of API/APIFormat occurences to use Schema instead
* add creation of directory structure per connector when creating descriptors: `postgres.json` --> `postgres/postgres.json`
* add configuration to add a schema filename prefix (`postgres.json` --> `debezium-postgres.json`)
* add configuration to add a schema filename suffix (`postgres.json` --> `postgres-1.9.0-SNAPSHOT.json`)
* add some minor logging (available schema formats, selected format, processed connectors) and throw errors on failed state (no schema formats found, no connectors found)
* remove Oracle connector schema generation as it is not annotated yet
* automatically resolving all dependencies required by the schema generator
Co-authored-by: Gunnar Morling <gunnar.morling@googlemail.com>
Start mining from the start SCN of the oldest still-pending transaction
at the time the initial snapshot was taken. This ensures that no events
get lost when that transaction is committed post-snapshot.
Make less assumptions about the order of SELECT_LOB_LOCATOR and
LOB_WRITE events when a LOB value is constructed. The current approach
also supports interleaved LOB creation (piecemeal creation of 2 large
LOB values in different rows or columns at the same time).
There is still no support for partial LOB manipulations (trimming a LOB,
appending a couple of bytes, overwriting just a couple of bytes in the
middle, ...). To properly support that, a wholly different approach is
needed.
The internal representation of BLOB values for LogMiner has been changed
from `HEXTORAW('...')` and `BlobChunkList` to a simple byte array for
efficiency.