v2-read-full-dat-file-at-once.patch
text/x-patch
Filename: v2-read-full-dat-file-at-once.patch
Type: text/x-patch
Part: 0
Patch
Format: unified
Series: patch v2
| File | + | − |
|---|---|---|
| src/backend/catalog/Catalog.pm | 17 | 1 |
diff --git a/src/backend/catalog/Catalog.pm b/src/backend/catalog/Catalog.pm
index e91a8e10a8..a71f5b05a8 100644
--- a/src/backend/catalog/Catalog.pm
+++ b/src/backend/catalog/Catalog.pm
@@ -287,6 +287,8 @@ sub ParseData
my $catname = $1;
my $data = [];
+ if ($preserve_formatting)
+ {
# Scan the input file.
while (<$ifd>)
{
@@ -346,11 +348,25 @@ sub ParseData
{
push @$data, $hash_ref if !$hash_ref->{autogenerated};
}
- elsif ($preserve_formatting)
+ else
{
push @$data, $_;
}
}
+ }
+ else
+ {
+ # When we only care about the contents, it's faster to read and eval
+ # the whole file at once.
+ local $/;
+ my $full_file = <$ifd>;
+ eval '$data = ' . $full_file; ## no critic (ProhibitStringyEval)
+ foreach my $hash_ref (@{$data})
+ {
+ AddDefaultValues($hash_ref, $schema, $catname);
+ }
+ }
+
close $ifd;
# If this is pg_type, auto-generate array types too.