push @table_defs, $create, map( { "$_;" } @defs), "";
}
+ for my $view ( $schema->get_views ) {
+ push @table_defs, create_view($view, {
+ add_drop_view => $add_drop_table,
+ no_comments => $no_comments,
+ });
+ }
+
# $create .= "COMMIT;\n";
return wantarray ? ($create, @table_defs, "COMMIT;\n") : join("\n", ($create, @table_defs, "COMMIT;\n"));
return $name;
}
+sub create_view {
+ my ($view, $options) = @_;
+ my $add_drop_view = $options->{add_drop_view};
+
+ my $view_name = $view->name;
+ debug("PKG: Looking at view '${view_name}'\n");
+
+ # Header. Should this look like what mysqldump produces?
+ my $extra = $view->extra;
+ my $create = '';
+ $create .= "--\n-- View: ${view_name}\n--\n" unless $options->{no_comments};
+ $create .= "DROP VIEW IF EXISTS $view_name;\n" if $add_drop_view;
+ $create .= 'CREATE';
+ $create .= " TEMPORARY" if exists($extra->{temporary}) && $extra->{temporary};
+ $create .= ' VIEW';
+ $create .= " IF NOT EXISTS" if exists($extra->{if_not_exists}) && $extra->{if_not_exists};
+ $create .= " ${view_name}";
+
+ if( my $sql = $view->sql ){
+ $create .= " AS\n ${sql}";
+ }
+ $create .= ";\n\n";
+ return $create;
+}
+
+
sub create_table
{
my ($table, $options) = @_;
sub alter_drop_index {
my ($constraint) = @_;
- return sprintf("DROP INDEX %s ON %s",
- $constraint->name, $constraint->table->name);
+ return sprintf("DROP INDEX %s",
+ $constraint->name);
}
sub batch_alter_table {
}
+# No-op. Just here to signify that we are a new style parser.
+sub preproces_schema { }
+
1;
=pod