diff --git a/lib/NGCP/BulkProcessor/Array.pm b/lib/NGCP/BulkProcessor/Array.pm index cf43515..862b167 100644 --- a/lib/NGCP/BulkProcessor/Array.pm +++ b/lib/NGCP/BulkProcessor/Array.pm @@ -23,7 +23,8 @@ our @EXPORT_OK = qw( filter getroundrobinitem getrandomitem - array_to_map); + array_to_map + flatten); sub mergearrays { my ($array_ptr1, $array_ptr2) = @_; @@ -323,4 +324,9 @@ sub mapeq { return 1; } +#https://metacpan.org/dist/List-Flatten/source/lib/List/Flatten.pm +sub flatten(@) { + return map { ref eq 'ARRAY' ? @$_ : $_ } @_; +} + 1; diff --git a/lib/NGCP/BulkProcessor/Dao/Trunk/billing/lnp_numbers.pm b/lib/NGCP/BulkProcessor/Dao/Trunk/billing/lnp_numbers.pm index c07d7a1..4cb298a 100644 --- a/lib/NGCP/BulkProcessor/Dao/Trunk/billing/lnp_numbers.pm +++ b/lib/NGCP/BulkProcessor/Dao/Trunk/billing/lnp_numbers.pm @@ -236,9 +236,9 @@ sub buildrecords_fromrows { sub getinsertstatement { - my ($insert_ignore) = @_; + my ($insert_ignore,$row_count) = @_; check_table(); - return insert_stmt($get_db,__PACKAGE__,$insert_ignore); + return insert_stmt($get_db,__PACKAGE__,$insert_ignore,undef,$row_count); } diff --git a/lib/NGCP/BulkProcessor/SqlProcessor.pm b/lib/NGCP/BulkProcessor/SqlProcessor.pm index 3a3b869..d3bcb19 100644 --- a/lib/NGCP/BulkProcessor/SqlProcessor.pm +++ b/lib/NGCP/BulkProcessor/SqlProcessor.pm @@ -715,7 +715,7 @@ sub update_record { sub insert_stmt { - my ($get_db,$class,$insert_ignore,$exclude_identity_fieldnames) = @_; + my ($get_db,$class,$insert_ignore,$exclude_identity_fieldnames,$row_count) = @_; my $db = (ref $get_db eq 'CODE') ? &$get_db() : $get_db; my $connectidentifier = $db->connectidentifier(); my $tid = threadid(); @@ -724,9 +724,11 @@ sub insert_stmt { $expected_fieldnames = [ grep { not contains($_,$exclude_identity_fieldnames); } @$expected_fieldnames ]; } my $tablename = $table_names->{$tid}->{$connectidentifier}->{$class}; + $row_count //= 1; + my $values = join ", ", ('(' . substr(',?' x scalar @$expected_fieldnames,1) . ')') x $row_count; return 'INSERT ' . ($insert_ignore ? $db->insert_ignore_phrase() . ' ' : '') . 'INTO ' . $db->tableidentifier($tablename) . ' (' . join(', ',map { local $_ = $_; $_ = $db->columnidentifier($_); $_; } @$expected_fieldnames) . - ') VALUES (' . substr(',?' x scalar @$expected_fieldnames,1) . ')'; + ') VALUES ' . $values; }