delete $weak_registry->{$slot};
}
elsif ($slot =~ /^SQL::Translator::Generator::DDL::SQLite/) {
- # SQLT got much better, but still leaks a little
- delete $weak_registry->{$slot};
+ # SQLT::Producer::SQLite keeps global generators around for quoted
+ # and non-quoted DDL, allow one for each quoting style
+ delete $weak_registry->{$slot}
+ unless $cleared->{sqlt_ddl_sqlite}->{@{$weak_registry->{$slot}{weakref}->quote_chars}}++;
}
elsif ($slot =~ /^Hash::Merge/) {
# only clear one object of a specific behavior - more would indicate trouble
# half of it is in XS no leaktracer sees it, and Devel::FindRef is equally
# stumped when trying to trace the origin. The problem is:
#
-# $cond_object --> result_source --> schema --> storage --> $dbh --> {cached_kids}
+# $cond_object --> result_source --> schema --> storage --> $dbh --> {CachedKids}
# ^ /
# \-------- bound value on prepared/cached STH <-----------/
#
-if ( my $r = $weak_registry->{'basic leaky_resultset_cond'}{weakref} ) {
- ok(! defined $r, 'Self-referential RS conditions no longer leak!')
- or $r->result_source(undef);
+{
+ local $TODO = 'This fails intermittently - see RT#82942';
+ if ( my $r = $weak_registry->{'basic leaky_resultset_cond'}{weakref} ) {
+ ok(! defined $r, 'Self-referential RS conditions no longer leak!')
+ or $r->result_source(undef);
+ }
}
assert_empty_weakregistry ($weak_registry);