mirror of
https://bitbucket.org/theswgsource/src-1.2.git
synced 2026-07-14 00:01:30 -04:00
78 lines
1.4 KiB
Perl
Executable File
78 lines
1.4 KiB
Perl
Executable File
#!/usr/bin/perl
|
|
|
|
while (<>)
|
|
{
|
|
if (/\-\- BEGIN GENERATED CODE \(make_copy_script.pl\)/)
|
|
{
|
|
print;
|
|
&generateCode;
|
|
do
|
|
{
|
|
last unless ($_=<>);
|
|
} until (/\-\- END GENERATED CODE/)
|
|
}
|
|
print;
|
|
}
|
|
|
|
sub generateCode
|
|
{
|
|
open (TABLIST,"ls -b ../schema/*.tab|");
|
|
|
|
$tabs="\t\t";
|
|
|
|
while (<TABLIST>)
|
|
{
|
|
chop;
|
|
s/\.tab//;
|
|
s/\.\.\/schema\///;
|
|
if (/objects/)
|
|
{
|
|
&makeCopyCommand($_);
|
|
}
|
|
}
|
|
|
|
close (TABLIST);
|
|
}
|
|
|
|
sub makeCopyCommand
|
|
{
|
|
my ($tablename)=@_;
|
|
my ($col,@collist,@vallist);
|
|
|
|
open (TABLEDEF,"../schema/${tablename}.tab");
|
|
while (<TABLEDEF>)
|
|
{
|
|
if (/^\s*(\w+)/)
|
|
{
|
|
$col = $1;
|
|
if ($col ne "create" && $col ne "primary")
|
|
{
|
|
push(@collist,$col);
|
|
if ($col eq "object_id")
|
|
{
|
|
push(@vallist,"object_id + object_id_offset");
|
|
}
|
|
elsif ($col eq "scene_id")
|
|
{
|
|
push(@vallist,"p_dest_scene");
|
|
}
|
|
elsif ($col eq "contained_by")
|
|
{
|
|
push(@vallist,"decode(contained_by, 0,0, contained_by + object_id_offset)");
|
|
}
|
|
else
|
|
{
|
|
push(@vallist,$col);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
close (TABLEDEF);
|
|
|
|
print $tabs."forall oid in objectsToCopy.FIRST..objectsToCopy.LAST\n";
|
|
print $tabs."\tinsert into $tablename (".join(", ",@collist).")\n";
|
|
print $tabs."\tselect ".join(", ",@vallist)."\n";
|
|
print $tabs."\tfrom buildcluster.$tablename\n";
|
|
print $tabs."\twhere object_id=objectsToCopy(oid);\n\n";
|
|
}
|