App-DBBrowser
view release on metacpan or search on metacpan
2.400 2023-12-18
- Changed SQL submenu behavior.
- New scalar functions.
- New extension to set aliases for all selected columns.
- Fixes for submenus HAVING and ORDER_BY when in aggregate mode.
- Updates for option alias.
- Update aggregate mode.
- Catch table-print execute errors earlier.
- Removed backwards compatibility for old f_attached_db and f_subqueries format.
- Use Clone to backup data.
- Term::Choose::Util minimum version '0.140'.
- Update documentation.
2.345_05 2023-12-09
- Fixes for submenus HAVING and ORDER when in aggregate mode.
- Update aggregate mode.
- Update CTEs.
- Update option alias for derived tables and non-unique columns in join.
- Bugfix backup data in join.
- Update documentation.
2.345_04 2023-11-16
- Bugfixes in the HAVING submenu.
- Removed option 'fast_reset'.
- Catch table-print execute errors earlier.
2.345_03 2023-10-28
- Use Clone to backup data.
- New option 'fast_reset'.
2.345_02 2023-10-23
- Bugfixes, updates and cleanups.
2.345_01 2023-10-21
- Changed SQL submenu behavior.
- Removed backwards compatibility for old f_attached_db and f_subqueries format.
- Added scalar new functions.
- Added extension to set aliases for all selected columns.
- New option 'Info'.
- Update write access.
2.042 2019-01-11
- Join: possibility to use a subquery instead of a table.
- Join: option to choose the comparison operator.
- Remove duplicates in history.
- Bugfix: avoid double quoting in saved subqueries.
2.041 2019-01-09
- Bugfix in join: backup aliases.
- Update join menus.
- Attached databases: make menus less noisy.
- Code refactoring.
2.040 2019-01-07
- MySQL and Pg databases: added 'autoincrement' options.
- Bugfix in 'get_schemas'.
2.039 2019-01-06
- Bugfix in join.
0.026 2014-04-28
- Improved documentation.
0.025 2014-04-26
- SQL menu entry "COLUMNS" is now called "SELECT".
- Code refactoring.
- Improved documentation.
0.024 2014-04-21
- Bugfix in "backup_in_hidd".
- It is possible now also with "GROUP BY" to choose more than one column at once.
- Update documentation.
0.023 2014-04-10
- Update documentation.
0.022 2014-03-24
- Update "ALL TABLES" in UNION.
- Mininum version of "Term::TablePrint" is now 0.005.
- Update Makefile.PL
lib/App/DBBrowser/Auxil.pm view on Meta::CPAN
i => $info,
o => $options,
d => $d
}, $class;
}
sub reset_sql {
my ( $sf, $sql ) = @_;
# preserve base data: table name, column names and data types:
my $backup = {
table => $sql->{table} // '',
columns => $sql->{columns} // [],
data_types => $sql->{data_types} // {},
};
# reset:
delete @{$sql}{ keys %$sql }; # not "$sql = {}" so $sql is still pointing to the outer $sql
# initialize:
my @string = qw( distinct_stmt set_stmt where_stmt having_stmt order_by_stmt limit_stmt offset_stmt );
my @array = qw( group_by_cols selected_cols set_args order_by_cols
ct_column_definitions ct_table_constraints ct_table_options
insert_col_names insert_args );
my @hash = qw( alias );
@{$sql}{@string} = ( '' ) x @string;
@{$sql}{@array} = map{ [] } @array;
@{$sql}{@hash} = map{ {} } @hash;
for my $y ( keys %$backup ) {
$sql->{$y} = $backup->{$y};
}
}
sub __stmt_fold {
my ( $sf, $term_w, $used_for, $stmt, $indent ) = @_;
if ( $used_for eq 'print' ) {
my $in = ' ' x $sf->{o}{G}{base_indent};
my %tabs = ( init_tab => $in x $indent, subseq_tab => $in x ( $indent + 1 ) );
return line_fold( $stmt, { width => $term_w, %tabs, join => 0 } );
lib/App/DBBrowser/From/Subquery.pm view on Meta::CPAN
( $saved_subqueries, $subquery_history, $print_history ) = $sf->__get_history();
@queries = $sf->__get_queries( $saved_subqueries, $subquery_history, $print_history );
$menu = [ @pre, @queries ];
}
next SUBQUERY;
}
elsif ( $menu->[$idx] eq $readline ) {
$selected_stmt = '';
}
elsif ( $menu->[$idx] eq $build_SQ ) {
# Don't backup $sf->{d}{default_table_alias_count}
my $bu_stmt_types = [ @{$sf->{d}{stmt_types}} ];
my $bu_table_origin = $sf->{d}{table_origin};
my $bu_main_info = $sf->{d}{main_info};
$sf->{d}{main_info} = $ext_info || $ax->get_sql_info( $sql );
$sf->{d}{nested_subqueries}++;
my $stmt = $sf->__build_SQ( $caller );
$sf->{d}{nested_subqueries}--;
$sf->{d}{stmt_types} = $bu_stmt_types;
$sf->{d}{table_origin} = $bu_table_origin;
$sf->{d}{main_info} = $bu_main_info;
lib/App/DBBrowser/Table.pm view on Meta::CPAN
$changed->{$sub_stmt} = $ret;
}
elsif ( $sql->{aggregate_mode} && ! @{$sql->{selected_cols}} ) { ##
$ax->print_error_message( "No columns selected!", $info );
next CUSTOMIZE;
}
elsif ( $sub_stmt eq $hidden ) {
if ( ! eval {
require App::DBBrowser::Table::InsertUpdateDelete;
my $write = App::DBBrowser::Table::InsertUpdateDelete->new( $sf->{i}, $sf->{o}, $sf->{d} );
my $backup_sql = $ax->clone_data( $sql );
$write->table_write_access( $sql );
# reset $sql else 'bu_where_stmt' from a delete/update could remain in $sql
$ax->reset_sql( $sql );
for my $key ( keys %$backup_sql ) {
$sql->{$key} = $backup_sql->{$key};
}
1 }
) {
$ax->print_error_message( $@ );
}
$sf->{d}{stmt_types} = [ 'Select' ];
$old_idx = 1;
}
elsif ( $sub_stmt eq $return_statement ) {
my $bu_cte_history = [ @{$sf->{d}{cte_history}} ];
( run in 1.002 second using v1.01-cache-2.11-cpan-dd325dfa429 )