BenchmarkAnything-Storage-Backend-SQL
view release on metacpan or search on metacpan
lib/BenchmarkAnything/Storage/Backend/SQL.pm view on Meta::CPAN
package BenchmarkAnything::Storage::Backend::SQL;
# git description: v0.028-6-g8b3d653
our $AUTHORITY = 'cpan:TAPPER';
# ABSTRACT: Autonomous SQL backend to store benchmarks
$BenchmarkAnything::Storage::Backend::SQL::VERSION = '0.029';
use 5.008;
use utf8;
use strict;
use warnings;
use Try::Tiny;
use Data::Dumper;
my $hr_default_config = {
select_cache => 0,
default_aggregation => 'min',
tables => {
unit_table => 'bench_units',
benchmark_table => 'benchs',
benchmark_value_table => 'bench_values',
subsume_type_table => 'bench_subsume_types',
benchmark_backup_value_table => 'bench_backup_values',
additional_type_table => 'bench_additional_types',
additional_value_table => 'bench_additional_values',
additional_relation_table => 'bench_additional_relations',
additional_type_relation_table => 'bench_additional_type_relations',
backup_additional_relation_table => 'bench_backup_additional_relations',
},
};
my $hr_column_ba_mapping = {
bench_value_id => 'VALUE_ID',
bench => 'NAME',
bench_value => 'VALUE',
bench_unit => 'UNIT',
created_at => 'CREATED',
};
my $fn_add_subsumed_point = sub {
my ( $or_self, $hr_atts ) = @_;
$or_self->{query}->start_transaction();
eval {
# insert subsumed benchmark value
$or_self->{query}->insert_benchmark_value(
$hr_atts->{rows}[0]{bench_id},
$hr_atts->{type_id},
$hr_atts->{VALUE},
);
my $i_bench_value_id = $or_self->{query}->last_insert_id(
$or_self->{config}{tables}{benchmark_value_table},
'bench_value_id',
);
# insert subsumed benchmark additional values
$or_self->{query}->copy_additional_values({
new_bench_value_id => $i_bench_value_id,
old_bench_value_id => $hr_atts->{rows}[0]{bench_value_id},
});
for my $hr_backup_row ( @{$hr_atts->{rows}} ) {
if ( $hr_backup_row->{bench_subsume_type_rank} == 1 ) {
if ( $hr_atts->{backup} ) {
# copy data rows to backup table
$or_self->{query}->copy_benchmark_backup_value({
new_bench_value_id => $i_bench_value_id,
old_bench_value_id => $hr_backup_row->{bench_value_id},
( run in 1.146 second using v1.01-cache-2.11-cpan-5a3173703d6 )