- my ($self, $form) = @_;
-
- $form->{sid} = $form->{dbdefault};
-
- my @upgradescripts = ();
- my $query;
- my $rc = -2;
-
- if ($form->{dbupdate}) {
-
- # read update scripts into memory
- opendir SQLDIR, "sql/." or &error("", "$!");
- ## LINET
- @upgradescripts =
- sort(cmp_script_version
- grep(/$form->{dbdriver}-upgrade-.*?\.sql$/, readdir(SQLDIR)));
- ## /LINET
- closedir SQLDIR;
- }
-
- foreach my $db (split / /, $form->{dbupdate}) {
-
- next unless $form->{$db};
-
- # strip db from dataset
- $db =~ s/^db//;
- &dbconnect_vars($form, $db);
-
- my $dbh =
- DBI->connect($form->{dbconnect}, $form->{dbuser}, $form->{dbpasswd})
- or $form->dberror;
-
- # check version
- $query = qq|SELECT version FROM defaults|;
- my $sth = $dbh->prepare($query);
-
- # no error check, let it fall through
- $sth->execute;
-
- my $version = $sth->fetchrow_array;
- $sth->finish;
-
- next unless $version;
-
- ## LINET
- $version = calc_version($version);
- ## /LINET
-
- foreach my $upgradescript (@upgradescripts) {
- my $a = $upgradescript;
- $a =~ s/^$form->{dbdriver}-upgrade-|\.sql$//g;
-
- my ($mindb, $maxdb) = split /-/, $a;
- my $str_maxdb = $maxdb;
- ## LINET
- $mindb = calc_version($mindb);
- $maxdb = calc_version($maxdb);
- ## /LINET
-
- next if ($version >= $maxdb);
-
- # if there is no upgrade script exit
- last if ($version < $mindb);
-
- # apply upgrade
- $self->process_query($form, $dbh, "sql/$upgradescript", $str_maxdb);
-
- $version = $maxdb;
-
- }
-
- $rc = 0;
- $dbh->disconnect;
-
- }
-
- $main::lxdebug->leave_sub();
-
- return $rc;
-}
-
-sub create_config {
- $main::lxdebug->enter_sub();
-
- my ($self, $filename) = @_;
-
- @config = &config_vars;
-
- open(CONF, ">$filename") or $self->error("$filename : $!");
-
- # create the config file
- print CONF qq|# configuration file for $self->{login}
-
-\%myconfig = (
-|;
-
- foreach $key (sort @config) {
- $self->{$key} =~ s/\'/\\\'/g;
- print CONF qq| $key => '$self->{$key}',\n|;
+ my ($self, $form, $dbh) = @_;
+
+ my $query = "SELECT tag FROM schema_info LIMIT 1";
+ if (!$dbh->do($query)) {
+ $dbh->rollback();
+ $query =
+ qq|CREATE TABLE schema_info (| .
+ qq| tag text, | .
+ qq| login text, | .
+ qq| itime timestamp DEFAULT now(), | .
+ qq| PRIMARY KEY (tag))|;
+ $dbh->do($query) || $form->dberror($query);