Author: mcbrown
Date: 2007-12-21 13:16:20 +0100 (Fri, 21 Dec 2007)
New Revision: 9429
Log:
Interim fix for the optvar parser
For mysqld we have very few instances where there are multiple command-line/config files for the same item
This fix addresses the inability of the parser to handle that situation by moving the definitions into individual hashes within an array of possible values. This will also provide the base for changing the output based on a 'later' setting where the different entry overrides the original setting.
The interim fix addresses the issue for commands, but not the mysqld option output, as this requires rebuilding the tables and how they are generated slightly. This fix will continue to output tables in an identical format to the current output.
Modified:
trunk/tools/MySQL/DynXML/Optvar.pm
trunk/tools/MySQL/DynXML/OptvarParser.pm
Modified: trunk/tools/MySQL/DynXML/Optvar.pm
===================================================================
--- trunk/tools/MySQL/DynXML/Optvar.pm 2007-12-21 03:20:13 UTC (rev 9428)
+++ trunk/tools/MySQL/DynXML/Optvar.pm 2007-12-21 12:16:20 UTC (rev 9429)
Changed blocks: 11, Lines Added: 65, Lines Deleted: 66; 12535 bytes
@@ -282,14 +282,14 @@
<title><command>$options->{command}</command> Option Reference</title>
<tgroup cols="4">
<colspec colwidth="20*"/>
-<colspec colwidth="60*"/>
+<colspec colwidth="20*"/>
+<colspec colwidth="50*"/>
<colspec colwidth="10*"/>
-<colspec colwidth="10*"/>
<thead>
<row>
<entry><emphasis role="bold">Format</emphasis></entry>
-<entry><emphasis role="bold">Description</emphasis></entry>
<entry><emphasis role="bold">Config File</emphasis></entry>
+<entry><emphasis role="bold">Description</emphasis></entry>
<entry><emphasis role="bold">Introduced</emphasis></entry>
</row>
</thead>
@@ -298,14 +298,19 @@
foreach my $id (@{$idlist})
{
- my @cmdline = keys %{$td->{$id}->{type}->{cmdline}};
- my @cnffile = keys %{$td->{$id}->{type}->{mycnf}};
- my $rowspan = scalar (@cmdline) + scalar (@cnffile);
- my $counter = 0;
- foreach my $cmdline (@cmdline)
- {
- my $format = $td->{$id}->{type}->{cmdline}->{$cmdline};
+ my @cmdline = ();
+ @cmdline = @{$td->{$id}->{type}->{cmdline}} if (exists($td->{$id}->{type}->{cmdline}));
+ my @cnffile = ();
+ @cnffile = @{$td->{$id}->{type}->{mycnf}} if (exists($td->{$id}->{type}->{mycnf}));
+
+ my $rowspan = scalar (@cmdline);
+
+ my @conffileopts = ();
+
+ foreach my $conf (sort { $a->{format} cmp $b->{format} } @cnffile)
+ {
+ my $format = $conf->{format};
if (exists($td->{$id}->{xrefto}) &&
exists($idmap->{byprefixid}->{sprintf('refman-%s',$options->{version})}->{$td->{$id}->{xrefto}}))
{
@@ -313,48 +318,42 @@
$td->{$id}->{xrefto},
$format);
}
-
- my @rowcontent = ();
- if ($counter == 0)
- {
- push(@rowcontent,
- xml_entry($format),
- xml_entry({morerows => scalar(@cmdline)},
- $td->{$id}->{shortdescription}),
- xml_entry(''),
- xml_entry($td->{$id}->{introduced}->{$options->{version}}->{real} || ''),
- );
- }
- else
- {
- push(@rowcontent,
- xml_entry($format),
- );
- }
- $counter++;
- print $outfile xml_row(@rowcontent);
+ push @conffileopts,$format;
}
- $counter = 0;
- foreach my $conf (@cnffile)
+
+ my $counter = 0;
+ foreach my $cmdline (sort { $a->{format} cmp $b->{format} } @cmdline)
{
- my $format = $td->{$id}->{type}->{mycnf}->{$conf};
+ my $format = $cmdline->{format};
+
if (exists($td->{$id}->{xrefto}) &&
- exists($idmap->{byid}->{$td->{$id}->{xrefto}}))
+ exists($idmap->{byprefixid}->{sprintf('refman-%s',$options->{version})}->{$td->{$id}->{xrefto}}))
{
- $format = sprintf('<xref linkend="%s">%s</xref>',
+ $format = sprintf('<link linkend="%s">%s</link>',
$td->{$id}->{xrefto},
$format);
}
+
my @rowcontent = ();
if ($counter == 0)
{
push(@rowcontent,
xml_entry($format),
- xml_entry({rowspan => scalar(@cnffile)},
- $td->{$id}->{shortdescription}),
- xml_entry('yes'),
- xml_entry($td->{$id}->{introduced}->{$options->{version}}->{real} || ''),
- );
+ xml_entry(join(", ",@conffileopts)));
+ if ($rowspan > 1)
+ {
+ push(@rowcontent,
+ xml_entry({morerows => $rowspan-1},
+ $td->{$id}->{shortdescription}));
+ }
+ else
+ {
+ push(@rowcontent,
+ xml_entry($td->{$id}->{shortdescription}));
+ }
+ push(@rowcontent,
+ xml_entry($td->{$id}->{introduced}->{$options->{version}}->{real} || ''),
+ );
}
else
{
@@ -561,10 +560,10 @@
compound_optype($item,'mycnf','Config File Format',$iodest,$options);
print $iodest (xml_row(xml_entry(xml_bold('Option Sets Variable')),
- xml_entry('Yes, ',xml_literal($item->{type}->{cmdline}->{setvar} ||
- $item->{type}->{mycnf}->{setvar}))))
- if (exists($item->{type}->{cmdline}->{setvar}) ||
- exists($item->{type}->{mycnf}->{setvar}));
+ xml_entry('Yes, ',xml_literal($item->{type}->{cmdline}->[0]->{setvar} ||
+ $item->{type}->{mycnf}->[0]->{setvar}))))
+ if (exists($item->{type}->{cmdline}->[0]->{setvar}) ||
+ exists($item->{type}->{mycnf}->[0]->{setvar}));
if (exists($item->{type}->{systemvar}) &&
exists($item->{type}->{statusvar}))
@@ -887,8 +886,8 @@
foreach my $id (@{$idlist})
{
- my $id_text = xml_literal($td->{$id}->{type}->{cmdline}->{setvar} ||
- $td->{$id}->{type}->{mycnf}->{setvar} ||
+ my $id_text = xml_literal($td->{$id}->{type}->{cmdline}->[0]->{setvar} ||
+ $td->{$id}->{type}->{mycnf}->[0]->{setvar} ||
$td->{$id}->{type}->{systemvar}->{format} ||
$id);
if (exists($td->{$id}->{xrefto}) &&
@@ -1026,8 +1025,8 @@
push @{$row},'';
}
- if (exists($td->{$id}->{type}->{cmdline}->{setvar}) &&
- ($td->{$id}->{type}->{cmdline}->{setvar} ne $id))
+ if (exists($td->{$id}->{type}->{cmdline}->[0]->{setvar}) &&
+ ($td->{$id}->{type}->{cmdline}->[0]->{setvar} ne $id))
{
$varrow = [];
push @{$varrow},@{$row};
@@ -1048,11 +1047,11 @@
$varrow->[1] = '';
$varrow->[2] = '';
$varrow->[0] = sprintf(' - <emphasis>Variable</emphasis>: %s',
- $td->{$id}->{type}->{cmdline}->{setvar});
+ $td->{$id}->{type}->{cmdline}->[0]->{setvar});
print $iodest summaryrow($varrow,{},$idmap);
}
- elsif (exists($td->{$id}->{type}->{mycnf}->{setvar}) &&
- ($td->{$id}->{type}->{mycnf}->{setvar} ne $id))
+ elsif (exists($td->{$id}->{type}->{mycnf}->[0]->{setvar}) &&
+ ($td->{$id}->{type}->{mycnf}->[0]->{setvar} ne $id))
{
$varrow = [];
push @{$varrow},@{$row};
@@ -1072,7 +1071,7 @@
$varrow->[1] = '';
$varrow->[2] = '';
$varrow->[0] = sprintf(' - <emphasis>Variable</emphasis>: %s',
- $td->{$id}->{type}->{mycnf}->{setvar});
+ $td->{$id}->{type}->{mycnf}->[0]{setvar});
print $iodest summaryrow($varrow,{},$idmap);
}
else
@@ -1179,31 +1178,31 @@
if (exists($item->{type}->{$type}))
{
- if (exists($item->{type}->{$type}->{inversion}) &&
- exists($item->{type}->{$type}->{outversion}))
+ if (exists($item->{type}->{$type}->[0]->{inversion}) &&
+ exists($item->{type}->{$type}->[0]->{outversion}))
{
printf $iodest (xml_row(xml_entry(xml_bold($fieldtitle)),
xml_entrytbl(xml_row(
- xml_entry(xml_literal($item->{type}->{$type}->{format} ||
+ xml_entry(xml_literal($item->{type}->{$type}->[0]->{format} ||
$item->{id})),
xml_entry(sprintf('%s-%s',
- $item->{type}->{$type}->{inversion},
- $item->{type}->{$type}->{outversion})
+ $item->{type}->{$type}->[0]->{inversion},
+ $item->{type}->{$type}->[0]->{outversion})
)
)
)
)
);
}
- elsif (exists($item->{type}->{$type}->{inversion}))
+ elsif (exists($item->{type}->{$type}->[0]->{inversion}))
{
if (defined($item->{introduced}->{$options->{version}}->{real}) &&
($item->{type}->{$type}->{inversion} ne $item->{introduced}->{$options->{version}}->{real}))
{
printf $iodest (xml_row(xml_entry(xml_bold($fieldtitle)),
- xml_entrytbl(xml_row(xml_entry(xml_literal($item->{type}->{$type}->{format} ||
+ xml_entrytbl(xml_row(xml_entry(xml_literal($item->{type}->{$type}->[0]->{format} ||
$item->{id})),
- xml_entry($item->{type}->{$type}->{inversion})
+ xml_entry($item->{type}->{$type}->[0]->{inversion})
)
)
)
@@ -1212,21 +1211,21 @@
else
{
printf $iodest (xml_row(xml_entry(xml_bold($fieldtitle)),
- xml_entry(xml_literal($item->{type}->{$type}->{format} || $item->{id}))
+ xml_entry(xml_literal($item->{type}->{$type}->[0]->{format} || $item->{id}))
)
);
}
}
- elsif (exists($item->{type}->{$type}->{outversion}))
+ elsif (exists($item->{type}->{$type}->[0]->{outversion}))
{
if (exists($item->{deprecated}->{version}) &&
- ($item->{type}->{$type}->{outversion} ne $item->{deprecated}->{version}))
+ ($item->{type}->{$type}->[0]->{outversion} ne $item->{deprecated}->{version}))
{
printf $iodest (xml_row(xml_entry(xml_bold($fieldtitle)),
- xml_entrytbl(xml_row(xml_entry(xml_literal($item->{type}->{$type}->{format} ||
+ xml_entrytbl(xml_row(xml_entry(xml_literal($item->{type}->{$type}->[0]->{format} ||
$item->{id})),
xml_entry(sprintf('(until %s)',
- $item->{type}->{$type}->{outversion})
+ $item->{type}->{$type}->[0]->{outversion})
)
)
)
@@ -1236,7 +1235,7 @@
else
{
printf $iodest (xml_row(xml_entry(xml_bold($fieldtitle)),
- xml_entry(xml_literal($item->{type}->{$type}->{format} || $item->{id}))
+ xml_entry(xml_literal($item->{type}->{$type}->[0]->{format} || $item->{id}))
)
);
}
Modified: trunk/tools/MySQL/DynXML/OptvarParser.pm
===================================================================
--- trunk/tools/MySQL/DynXML/OptvarParser.pm 2007-12-21 03:20:13 UTC (rev 9428)
+++ trunk/tools/MySQL/DynXML/OptvarParser.pm 2007-12-21 12:16:20 UTC (rev 9429)
Changed blocks: 1, Lines Added: 7, Lines Deleted: 3; 1327 bytes
@@ -109,15 +109,19 @@
if ($element->{Name} eq 'optype')
{
- $self->{tabledata}->{$self->{currentid}}->{type}->{$element->{Attributes}->{class}} = {};
+ $self->{tabledata}->{$self->{currentid}}->{type}->{$element->{Attributes}->{class}} = []
+ unless($self->{tabledata}->{$self->{currentid}}->{type}->{$element->{Attributes}->{class}});
+ my $optypespec = {format => $self->{currentid}};
foreach my $opt (qw/format inversion outversion setvar/)
{
if (exists($element->{Attributes}->{$opt}))
{
- $self->{tabledata}->{$self->{currentid}}->{type}->{$element->{Attributes}->{class}}->{$opt} =
- $element->{Attributes}->{$opt};
+ $optypespec->{$opt} = $element->{Attributes}->{$opt};
}
}
+ push(@{$self->{tabledata}->{$self->{currentid}}->{type}->{$element->{Attributes}->{class}}},
+ $optypespec)
+ if (scalar keys %{$optypespec} > 0);
}
if ($element->{Name} eq 'vartype')
{
| Thread |
|---|
| • svn commit - mysqldoc@docsrva: r9429 - trunk/tools/MySQL/DynXML | mcbrown | 21 Dec |