X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-si%2Fmodules%2FDBsqlite.pm;h=8eba13d478cf28edeaadfc914db033ef716cfda2;hb=8d32c2811e256aeea583ef2f04654d6b5e56220f;hp=2bd073d7a12db7da6041fcad6c355057be4425c0;hpb=b0bcbe8d6b81f172850645bc7f197e448595354c;p=gosa.git diff --git a/gosa-si/modules/DBsqlite.pm b/gosa-si/modules/DBsqlite.pm index 2bd073d7a..8eba13d47 100644 --- a/gosa-si/modules/DBsqlite.pm +++ b/gosa-si/modules/DBsqlite.pm @@ -8,7 +8,6 @@ use Data::Dumper; use GOSA::GosaSupportDaemon; use threads; use Time::HiRes qw(usleep); -use utf8; my $col_names = {}; @@ -52,7 +51,7 @@ sub create_lock : locked { my $lock = $self->{db_lock}; while( -f $lock ) { #&main::daemon_log("(".((defined $funcname)?$funcname:"").") Lock (PID ".$$.") $lock found",8); - sleep 1; + usleep 100; } open($self->{db_lock_handle},'>',$self->{db_lock}); @@ -79,8 +78,8 @@ sub create_table { } $col_names->{ $table_name } = $col_names_ref; - my $col_names_string = join(', ', @col_names); - my $sql_statement = "CREATE TABLE IF NOT EXISTS $table_name ( $col_names_string )"; + my $col_names_string = join("', '", @col_names); + my $sql_statement = "CREATE TABLE IF NOT EXISTS $table_name ( '$col_names_string' )"; &create_lock($self,'create_table'); $self->{dbh}->do($sql_statement); &remove_lock($self,'create_table'); @@ -103,7 +102,7 @@ sub add_dbentry { return (2, "a hash key 'primkey' with at least an empty list as value is necessary for add_dbentry"); } my $primkeys = $arg->{'primkey'}; - my $prim_statement; + my $prim_statement=""; if( 0 != @$primkeys ) { my @prim_list; foreach my $primkey (@$primkeys) { @@ -147,15 +146,17 @@ sub add_dbentry { my $col_names = &get_table_columns($self, $table); # assign values to column name variables - my @add_list; + my @col_list; + my @val_list; foreach my $col_name (@{$col_names}) { # use function parameter for column values if (exists $arg->{$col_name}) { - push(@add_list, $arg->{$col_name}); + push(@col_list, $col_name); + push(@val_list, $arg->{$col_name}); } } - my $sql_statement = "INSERT INTO $table VALUES ('".join("', '", @add_list)."')"; + my $sql_statement = "INSERT INTO $table (".join(", ", @col_list).") VALUES ('".join("', '", @val_list)."')"; &create_lock($self,'add_dbentry'); my $db_res = $self->{dbh}->do($sql_statement); &remove_lock($self,'add_dbentry'); @@ -268,6 +269,20 @@ sub exec_statement { } +sub exec_statementlist { + my $self = shift; + my $sql_list = shift; + my @db_answer; + + &create_lock($self,'exec_statement'); + foreach my $sql (@$sql_list) { + @db_answer = @{$self->{dbh}->selectall_arrayref($sql)}; + } + &remove_lock($self, 'exec_statement'); + + return \@db_answer; +} + sub count_dbentries { my ($self, $table)= @_; my $error= 0; @@ -282,5 +297,18 @@ sub count_dbentries { +sub move_table { + my ($self, $from, $to) = @_; + + my $sql_statement_drop = "DROP TABLE IF EXISTS $to"; + my $sql_statement_alter = "ALTER TABLE $from RENAME TO $to"; + &create_lock($self,'move_table'); + my $db_res = $self->{dbh}->do($sql_statement_drop); + $db_res = $self->{dbh}->do($sql_statement_alter); + &remove_lock($self,'move_table'); + + return; +} + 1;