fix some issues with multi-db_schema support
Fix unique constraint detection for Oracle in multischema setups
(RT#70851) previously identically named tables in different schemas with
an identically named unique constraint would cause the columns in the
constraint definition to be repeated. Modifies the multischema extra
tests for all databases to test for the correctness of the dumped unique
constraint.
Update Oracle multischema extra tests to include the complete set of
test cases used in multischema test sets for other databases.
Update Oracle is_auto_increment detection code to work in multischema
setups. The new logic is by necessity fuzzier, please report false
positives to RT. At some point this will get rewritten to use a PL/SQL
parser on the trigger code.
Add a test for the miscaching of table keys when there are identically
named tables in different schemas for all databases. This was fixed for
MySQL in master.
Completely rewrite the table monikerization code to work better with
moniker_parts, preserving the functionality of all naming versions.
Schema/database names are transformed to parts of the moniker name using
String::ToIdentifier::EN::Unicode (or String::ToIdentifier::EN if
naming => { force_ascii => 1 }
is set.) to translate non-identifier characters.
Add the next naming version, v8 as an experimental mode. In this mode,
the table names go through String::ToIdentifier::EN::Unicode as
well, instead of non-identifier characters being stripped out.
The clashing monikers error message is updated to mention moniker_parts
in multischema configurations.
The ::RelBuilder duplicate relationship name disambiguator has been
updated to handle the case of relationships in the same class pointing
to identically named tables in different schemas/databases.
Improve the multischema extra tests to include an identically named
table in both schemas and to use moniker_parts. This also reduces the
chances of moniker clashes on a tester's database.
Change the multidatabase tests to test both
db_schema => { db1 => '%', db2 => '%' }
and
db_schema => { '%' => '%' }
as well as to include an identically named table.
13 files changed: