diff options
| -rw-r--r-- | data/doc/sisu/CHANGELOG_v5 | 6 | ||||
| -rw-r--r-- | data/doc/sisu/CHANGELOG_v6 | 6 | ||||
| -rw-r--r-- | lib/sisu/v5/db_import.rb | 73 | ||||
| -rw-r--r-- | lib/sisu/v5/db_remove.rb | 90 | ||||
| -rw-r--r-- | lib/sisu/v5/db_select.rb | 39 | ||||
| -rw-r--r-- | lib/sisu/v5/utils.rb | 1 | ||||
| -rw-r--r-- | lib/sisu/v6/db_import.rb | 73 | ||||
| -rw-r--r-- | lib/sisu/v6/db_remove.rb | 90 | ||||
| -rw-r--r-- | lib/sisu/v6/db_select.rb | 39 | ||||
| -rw-r--r-- | lib/sisu/v6/utils.rb | 1 | 
10 files changed, 362 insertions, 56 deletions
| diff --git a/data/doc/sisu/CHANGELOG_v5 b/data/doc/sisu/CHANGELOG_v5 index 1a596776..89a25da3 100644 --- a/data/doc/sisu/CHANGELOG_v5 +++ b/data/doc/sisu/CHANGELOG_v5 @@ -38,6 +38,12 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_5.5.3.orig.tar.xz    sisu_5.5.3.orig.tar.xz    sisu_5.5.3-1.dsc +* db, rescue where no tables attempt to initialize db and retry +  (catch db message where no tables and attempt to initialize database) +  * internally run the equivalent of --createall +  * (if successful) permitting completion of --import or --update command +  * make use of action triggers +  %% 5.5.2.orig.tar.xz (2014-07-22:29/2)  http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/sisu_5.5.2  http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/debian/sisu_5.5.2-1 diff --git a/data/doc/sisu/CHANGELOG_v6 b/data/doc/sisu/CHANGELOG_v6 index e1201c3c..7628fd67 100644 --- a/data/doc/sisu/CHANGELOG_v6 +++ b/data/doc/sisu/CHANGELOG_v6 @@ -28,6 +28,12 @@ http://www.jus.uio.no/sisu/pkg/src/sisu_6.1.3.orig.tar.xz    sisu_6.1.3.orig.tar.xz    sisu_6.1.3-1.dsc +* db, rescue where no tables attempt to initialize db and retry +  (catch db message where no tables and attempt to initialize database) +  * internally run the equivalent of --createall +  * (if successful) permitting completion of --import or --update command +  * make use of action triggers +  %% 6.1.2.orig.tar.xz (2014-07-22:29/2)  http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/sisu_6.1.2  http://sources.sisudoc.org/gitweb/?p=code/sisu.git;a=log;h=refs/tags/debian/sisu_6.1.2-1 diff --git a/lib/sisu/v5/db_import.rb b/lib/sisu/v5/db_import.rb index 3e9d19ec..579b95d5 100644 --- a/lib/sisu/v5/db_import.rb +++ b/lib/sisu/v5/db_import.rb @@ -138,16 +138,78 @@ module SiSU_DbImport          'Marshal Load',          @fnc        ).puts_grey if @opt.act[:verbose][:set]==:on -#%        select_first_match=%{          SELECT metadata_and_text.tid          FROM metadata_and_text          WHERE metadata_and_text.src_filename = '#{@md.fns}'          AND metadata_and_text.language_document_char = '#{@opt.lng}'        ;} # note, for .ssm: @md.fns (is set during runtime & is) != @opt.fns @md.opt.fns -      file_exist=@sql_type==:sqlite \ -      ? @conn.get_first_value(select_first_match) -      : @conn.exec(select_first_match).field_values("tid")[0] +      file_exist=if @sql_type==:sqlite +        begin +          @conn.get_first_value(select_first_match) +        rescue SQLite3::Exception => e +          # not tested +          puts "Exception occurred" +          puts e +          SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( +            "\n" \ +            + 'Attempting to initialize db' + "\n" \ +            + 'Creating db tables' +          ) +          sdb= +            SiSU_DbDBI::Create.new(@opt,@conn,@file_maint,@sql_type) +          sdb_index= +            SiSU_DbDBI::Index.new(@opt,@conn,@file_maint,@sql_type) +          sdb.create_table.metadata_and_text +          sdb.create_table.doc_objects +          sdb.create_table.endnotes +          sdb.create_table.endnotes_asterisk +          sdb.create_table.endnotes_plus +          sdb.create_table.urls +          sdb_index.create_indexes +        end +      else +        begin +          @conn.exec(select_first_match).field_values("tid")[0] +        rescue PG::Error => e +          err=[ +            e.result.error_field( PG::Result::PG_DIAG_SEVERITY ), +            e.result.error_field( PG::Result::PG_DIAG_SQLSTATE ), +            e.result.error_field( PG::Result::PG_DIAG_MESSAGE_PRIMARY ), +            e.result.error_field( PG::Result::PG_DIAG_MESSAGE_DETAIL ), +            e.result.error_field( PG::Result::PG_DIAG_MESSAGE_HINT ), +            e.result.error_field( PG::Result::PG_DIAG_STATEMENT_POSITION ), +            e.result.error_field( PG::Result::PG_DIAG_INTERNAL_POSITION ), +            e.result.error_field( PG::Result::PG_DIAG_INTERNAL_QUERY ), +            e.result.error_field( PG::Result::PG_DIAG_CONTEXT ), +            e.result.error_field( PG::Result::PG_DIAG_SOURCE_FILE ), +            e.result.error_field( PG::Result::PG_DIAG_SOURCE_LINE ), +            e.result.error_field( PG::Result::PG_DIAG_SOURCE_FUNCTION ), +          ] +          p err +          if err[2] =~/relation "\S+?" does not exist/ \ +          or err.inspect =~/relation "\S+?" does not exist/ +            SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( +              "\n" \ +              + err[2] + "\n" \ +              + 'Attempting to initialize db' + "\n" \ +              + 'Creating db tables' +            ) +            sdb= +              SiSU_DbDBI::Create.new(@opt,@conn,@file_maint,@sql_type) +            sdb_index= +              SiSU_DbDBI::Index.new(@opt,@conn,@file_maint,@sql_type) +            sdb.create_table.metadata_and_text +            sdb.create_table.doc_objects +            sdb.create_table.endnotes +            sdb.create_table.endnotes_asterisk +            sdb.create_table.endnotes_plus +            sdb.create_table.urls +            sdb_index.create_indexes +            retry +          end +        end +      end        if not file_exist          t_d=[]                                                              # transaction_data          t_d << db_import_metadata @@ -199,7 +261,7 @@ module SiSU_DbImport        else          if file_exist            @db=SiSU_Env::InfoDb.new -          puts "\nfile #{@opt.fns} in language code #{@opt.lng} already exists in database #{@db.psql.db} update instead?" +          puts "\nfile #{@opt.fns} in language code #{@opt.lng} already exists in database #{@db.psql.db}, use --update instead?"          end        end      end @@ -535,6 +597,7 @@ module SiSU_DbImport                    if inf[/#{Mx[:en_a_o]}(\d+)(.+?)#{Mx[:en_a_c]}/]                      nr,txt,digest_clean=$1,$2.strip,0                    end +                  @id_n ||=0                    @id_n+=1                    txt=special_character_escape(txt)                    body=SiSU_FormatShared::CSS_Format.new(@md,data).endnote(nr,txt) diff --git a/lib/sisu/v5/db_remove.rb b/lib/sisu/v5/db_remove.rb index 1fbf8c9f..7075780e 100644 --- a/lib/sisu/v5/db_remove.rb +++ b/lib/sisu/v5/db_remove.rb @@ -76,22 +76,82 @@ module SiSU_DbRemove          : false        end        del_id=if driver_sqlite3 -        remove_selected=%{ -          SELECT tid -          FROM metadata_and_text -          WHERE src_filename = '#{@md.fns}' -          AND metadata_and_text.language_document_char = '#{@opt.lng}' -        ;} # note, for .ssm: @md.fns (is set during runtime & is) != @opt.fns @md.opt.fns -        @conn.get_first_value(remove_selected).to_i +        begin +          remove_selected=%{ +            SELECT tid +            FROM metadata_and_text +            WHERE src_filename = '#{@md.fns}' +            AND metadata_and_text.language_document_char = '#{@opt.lng}' +          ;} # note, for .ssm: @md.fns (is set during runtime & is) != @opt.fns @md.opt.fns +          @conn.get_first_value(remove_selected).to_i +        rescue SQLite3::Exception => e +          #not tested +          puts "Exception occurred" +          SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark(e.inspect) +          SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( +            "\n" \ +            + 'Attempting to initialize db' + "\n" \ +            + 'Creating db tables' +          ) +          sdb= +            SiSU_DbDBI::Create.new(@opt,@conn,@file_maint,@sql_type) +          sdb_index= +            SiSU_DbDBI::Index.new(@opt,@conn,@file_maint,@sql_type) +          sdb.create_table.metadata_and_text +          sdb.create_table.doc_objects +          sdb.create_table.endnotes +          sdb.create_table.endnotes_asterisk +          sdb.create_table.endnotes_plus +          sdb.create_table.urls +          sdb_index.create_indexes +        end        else -        remove_selected=%{ -          SELECT metadata_and_text.tid -          FROM metadata_and_text -          WHERE metadata_and_text.src_filename = '#{@md.fns}' -          AND metadata_and_text.language_document_char = '#{@opt.lng}' -        ;} # note, for .ssm: @md.fns (is set during runtime & is) != @opt.fns @md.opt.fns -        x=@conn.exec(remove_selected) -        x.field_values("tid")[0] +        begin +          remove_selected=%{ +            SELECT metadata_and_text.tid +            FROM metadata_and_text +            WHERE metadata_and_text.src_filename = '#{@md.fns}' +            AND metadata_and_text.language_document_char = '#{@opt.lng}' +          ;} # note, for .ssm: @md.fns (is set during runtime & is) != @opt.fns @md.opt.fns +          x=@conn.exec(remove_selected) +          x.field_values("tid")[0] +        rescue PG::Error => e +          err=[ +            e.result.error_field( PG::Result::PG_DIAG_SEVERITY ), +            e.result.error_field( PG::Result::PG_DIAG_SQLSTATE ), +            e.result.error_field( PG::Result::PG_DIAG_MESSAGE_PRIMARY ), +            e.result.error_field( PG::Result::PG_DIAG_MESSAGE_DETAIL ), +            e.result.error_field( PG::Result::PG_DIAG_MESSAGE_HINT ), +            e.result.error_field( PG::Result::PG_DIAG_STATEMENT_POSITION ), +            e.result.error_field( PG::Result::PG_DIAG_INTERNAL_POSITION ), +            e.result.error_field( PG::Result::PG_DIAG_INTERNAL_QUERY ), +            e.result.error_field( PG::Result::PG_DIAG_CONTEXT ), +            e.result.error_field( PG::Result::PG_DIAG_SOURCE_FILE ), +            e.result.error_field( PG::Result::PG_DIAG_SOURCE_LINE ), +            e.result.error_field( PG::Result::PG_DIAG_SOURCE_FUNCTION ), +          ] +          SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark("\n" + err.inspect) +          if err[2] =~/relation "\S+?" does not exist/ \ +          or err.inspect =~/relation "\S+?" does not exist/ +            SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( +              "\n" \ +              + err[2] + "\n" \ +              + 'Attempting to initialize db' + "\n" \ +              + 'Creating db tables' +            ) +            sdb= +              SiSU_DbDBI::Create.new(@opt,@conn,@file_maint,@sql_type) +            sdb_index= +              SiSU_DbDBI::Index.new(@opt,@conn,@file_maint,@sql_type) +            sdb.create_table.metadata_and_text +            sdb.create_table.doc_objects +            sdb.create_table.endnotes +            sdb.create_table.endnotes_asterisk +            sdb.create_table.endnotes_plus +            sdb.create_table.urls +            sdb_index.create_indexes +          end +        end        end        if del_id          sql_entry=[ diff --git a/lib/sisu/v5/db_select.rb b/lib/sisu/v5/db_select.rb index 3f232c14..26bbd3da 100644 --- a/lib/sisu/v5/db_select.rb +++ b/lib/sisu/v5/db_select.rb @@ -91,22 +91,45 @@ module SiSU_DbSelect        if @sql_type==:sqlite \        and (not (FileTest.file?(@db.sqlite.db)) \        or FileTest.zero?(@db.sqlite.db)) -        puts %{no connection with #{@sql_type} database established, you may need to run:\n} \ -        + %{    sisu --#{@sql_type} --createall\n} \ +        puts %{no connection with sqlite database established, you may need to run:\n} \ +        + %{    sisu --sqlite --createall\n} \          + %{  before attempting to populate the database} -        exit +        SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( +          "\n" \ +          + 'Attempting to initialize db' + "\n" \ +          + 'Creating db tables' +        ) +        @sdb.create_table.metadata_and_text +        @sdb.create_table.doc_objects +        @sdb.create_table.endnotes +        @sdb.create_table.endnotes_asterisk +        @sdb.create_table.endnotes_plus +        @sdb.create_table.urls +        @sdb_index.create_indexes        end        if @conn.is_a?(NilClass) -        db=if @sql_type==:sqlite -          puts %{no connection with #{@sql_type} database established, you may need to run:\n} \ -          + %{    sisu --#{@sql_type} --createall\n} \ +        if @sql_type==:sqlite +          puts %{no connection with sqlite database established, you may need to run:\n} \ +          + %{    sisu --sqlite --createall\n} \            + %{  before attempting to populate the database} +          SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( +            "\n" \ +            + 'Attempting to initialize db' + "\n" \ +            + 'Creating db tables' +          ) +          @sdb.create_table.metadata_and_text +          @sdb.create_table.doc_objects +          @sdb.create_table.endnotes +          @sdb.create_table.endnotes_asterisk +          @sdb.create_table.endnotes_plus +          @sdb.create_table.urls +          @sdb_index.create_indexes            @db.sqlite.db          else -          puts %{no connection with #{@sql_type} database established, you may need to run:\n} \ +          puts %{no connection with pg database established, you may need to run:\n} \            + %{    createdb "#{@db.psql.db}"\n} \            + %{  after that don't forget to run:\n} \ -          + %{    sisu --#{@sql_type} --createall\n} \ +          + %{    sisu --pg --createall\n} \            + %{  before attempting to populate the database}            @db.psql.db          end diff --git a/lib/sisu/v5/utils.rb b/lib/sisu/v5/utils.rb index 4c732a8b..c5a312d2 100644 --- a/lib/sisu/v5/utils.rb +++ b/lib/sisu/v5/utils.rb @@ -211,6 +211,7 @@ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).mark({ m: %{  SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).mark(%{ code: #{@@flag['code']}, open --> "#{t_o}" }) \  if t_o=~/^```/m  SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).mark("open -->") +SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark("open -->")  SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark("open -->",:green)  SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark(:green,"open -->")  SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark("open -->") diff --git a/lib/sisu/v6/db_import.rb b/lib/sisu/v6/db_import.rb index f3e8b96c..cca02edf 100644 --- a/lib/sisu/v6/db_import.rb +++ b/lib/sisu/v6/db_import.rb @@ -138,16 +138,78 @@ module SiSU_DbImport          'Marshal Load',          @fnc        ).puts_grey if @opt.act[:verbose][:set]==:on -#%        select_first_match=%{          SELECT metadata_and_text.tid          FROM metadata_and_text          WHERE metadata_and_text.src_filename = '#{@md.fns}'          AND metadata_and_text.language_document_char = '#{@opt.lng}'        ;} # note, for .ssm: @md.fns (is set during runtime & is) != @opt.fns @md.opt.fns -      file_exist=@sql_type==:sqlite \ -      ? @conn.get_first_value(select_first_match) -      : @conn.exec(select_first_match).field_values("tid")[0] +      file_exist=if @sql_type==:sqlite +        begin +          @conn.get_first_value(select_first_match) +        rescue SQLite3::Exception => e +          # not tested +          puts "Exception occurred" +          puts e +          SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( +            "\n" \ +            + 'Attempting to initialize db' + "\n" \ +            + 'Creating db tables' +          ) +          sdb= +            SiSU_DbDBI::Create.new(@opt,@conn,@file_maint,@sql_type) +          sdb_index= +            SiSU_DbDBI::Index.new(@opt,@conn,@file_maint,@sql_type) +          sdb.create_table.metadata_and_text +          sdb.create_table.doc_objects +          sdb.create_table.endnotes +          sdb.create_table.endnotes_asterisk +          sdb.create_table.endnotes_plus +          sdb.create_table.urls +          sdb_index.create_indexes +        end +      else +        begin +          @conn.exec(select_first_match).field_values("tid")[0] +        rescue PG::Error => e +          err=[ +            e.result.error_field( PG::Result::PG_DIAG_SEVERITY ), +            e.result.error_field( PG::Result::PG_DIAG_SQLSTATE ), +            e.result.error_field( PG::Result::PG_DIAG_MESSAGE_PRIMARY ), +            e.result.error_field( PG::Result::PG_DIAG_MESSAGE_DETAIL ), +            e.result.error_field( PG::Result::PG_DIAG_MESSAGE_HINT ), +            e.result.error_field( PG::Result::PG_DIAG_STATEMENT_POSITION ), +            e.result.error_field( PG::Result::PG_DIAG_INTERNAL_POSITION ), +            e.result.error_field( PG::Result::PG_DIAG_INTERNAL_QUERY ), +            e.result.error_field( PG::Result::PG_DIAG_CONTEXT ), +            e.result.error_field( PG::Result::PG_DIAG_SOURCE_FILE ), +            e.result.error_field( PG::Result::PG_DIAG_SOURCE_LINE ), +            e.result.error_field( PG::Result::PG_DIAG_SOURCE_FUNCTION ), +          ] +          p err +          if err[2] =~/relation "\S+?" does not exist/ \ +          or err.inspect =~/relation "\S+?" does not exist/ +            SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( +              "\n" \ +              + err[2] + "\n" \ +              + 'Attempting to initialize db' + "\n" \ +              + 'Creating db tables' +            ) +            sdb= +              SiSU_DbDBI::Create.new(@opt,@conn,@file_maint,@sql_type) +            sdb_index= +              SiSU_DbDBI::Index.new(@opt,@conn,@file_maint,@sql_type) +            sdb.create_table.metadata_and_text +            sdb.create_table.doc_objects +            sdb.create_table.endnotes +            sdb.create_table.endnotes_asterisk +            sdb.create_table.endnotes_plus +            sdb.create_table.urls +            sdb_index.create_indexes +            retry +          end +        end +      end        if not file_exist          t_d=[]                                                              # transaction_data          t_d << db_import_metadata @@ -199,7 +261,7 @@ module SiSU_DbImport        else          if file_exist            @db=SiSU_Env::InfoDb.new -          puts "\nfile #{@opt.fns} in language code #{@opt.lng} already exists in database #{@db.psql.db} update instead?" +          puts "\nfile #{@opt.fns} in language code #{@opt.lng} already exists in database #{@db.psql.db}, use --update instead?"          end        end      end @@ -535,6 +597,7 @@ module SiSU_DbImport                    if inf[/#{Mx[:en_a_o]}(\d+)(.+?)#{Mx[:en_a_c]}/]                      nr,txt,digest_clean=$1,$2.strip,0                    end +                  @id_n ||=0                    @id_n+=1                    txt=special_character_escape(txt)                    body=SiSU_FormatShared::CSS_Format.new(@md,data).endnote(nr,txt) diff --git a/lib/sisu/v6/db_remove.rb b/lib/sisu/v6/db_remove.rb index 037dda33..c56f40a0 100644 --- a/lib/sisu/v6/db_remove.rb +++ b/lib/sisu/v6/db_remove.rb @@ -76,22 +76,82 @@ module SiSU_DbRemove          : false        end        del_id=if driver_sqlite3 -        remove_selected=%{ -          SELECT tid -          FROM metadata_and_text -          WHERE src_filename = '#{@md.fns}' -          AND metadata_and_text.language_document_char = '#{@opt.lng}' -        ;} # note, for .ssm: @md.fns (is set during runtime & is) != @opt.fns @md.opt.fns -        @conn.get_first_value(remove_selected).to_i +        begin +          remove_selected=%{ +            SELECT tid +            FROM metadata_and_text +            WHERE src_filename = '#{@md.fns}' +            AND metadata_and_text.language_document_char = '#{@opt.lng}' +          ;} # note, for .ssm: @md.fns (is set during runtime & is) != @opt.fns @md.opt.fns +          @conn.get_first_value(remove_selected).to_i +        rescue SQLite3::Exception => e +          #not tested +          puts "Exception occurred" +          SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark(e.inspect) +          SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( +            "\n" \ +            + 'Attempting to initialize db' + "\n" \ +            + 'Creating db tables' +          ) +          sdb= +            SiSU_DbDBI::Create.new(@opt,@conn,@file_maint,@sql_type) +          sdb_index= +            SiSU_DbDBI::Index.new(@opt,@conn,@file_maint,@sql_type) +          sdb.create_table.metadata_and_text +          sdb.create_table.doc_objects +          sdb.create_table.endnotes +          sdb.create_table.endnotes_asterisk +          sdb.create_table.endnotes_plus +          sdb.create_table.urls +          sdb_index.create_indexes +        end        else -        remove_selected=%{ -          SELECT metadata_and_text.tid -          FROM metadata_and_text -          WHERE metadata_and_text.src_filename = '#{@md.fns}' -          AND metadata_and_text.language_document_char = '#{@opt.lng}' -        ;} # note, for .ssm: @md.fns (is set during runtime & is) != @opt.fns @md.opt.fns -        x=@conn.exec(remove_selected) -        x.field_values("tid")[0] +        begin +          remove_selected=%{ +            SELECT metadata_and_text.tid +            FROM metadata_and_text +            WHERE metadata_and_text.src_filename = '#{@md.fns}' +            AND metadata_and_text.language_document_char = '#{@opt.lng}' +          ;} # note, for .ssm: @md.fns (is set during runtime & is) != @opt.fns @md.opt.fns +          x=@conn.exec(remove_selected) +          x.field_values("tid")[0] +        rescue PG::Error => e +          err=[ +            e.result.error_field( PG::Result::PG_DIAG_SEVERITY ), +            e.result.error_field( PG::Result::PG_DIAG_SQLSTATE ), +            e.result.error_field( PG::Result::PG_DIAG_MESSAGE_PRIMARY ), +            e.result.error_field( PG::Result::PG_DIAG_MESSAGE_DETAIL ), +            e.result.error_field( PG::Result::PG_DIAG_MESSAGE_HINT ), +            e.result.error_field( PG::Result::PG_DIAG_STATEMENT_POSITION ), +            e.result.error_field( PG::Result::PG_DIAG_INTERNAL_POSITION ), +            e.result.error_field( PG::Result::PG_DIAG_INTERNAL_QUERY ), +            e.result.error_field( PG::Result::PG_DIAG_CONTEXT ), +            e.result.error_field( PG::Result::PG_DIAG_SOURCE_FILE ), +            e.result.error_field( PG::Result::PG_DIAG_SOURCE_LINE ), +            e.result.error_field( PG::Result::PG_DIAG_SOURCE_FUNCTION ), +          ] +          SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark("\n" + err.inspect) +          if err[2] =~/relation "\S+?" does not exist/ \ +          or err.inspect =~/relation "\S+?" does not exist/ +            SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( +              "\n" \ +              + err[2] + "\n" \ +              + 'Attempting to initialize db' + "\n" \ +              + 'Creating db tables' +            ) +            sdb= +              SiSU_DbDBI::Create.new(@opt,@conn,@file_maint,@sql_type) +            sdb_index= +              SiSU_DbDBI::Index.new(@opt,@conn,@file_maint,@sql_type) +            sdb.create_table.metadata_and_text +            sdb.create_table.doc_objects +            sdb.create_table.endnotes +            sdb.create_table.endnotes_asterisk +            sdb.create_table.endnotes_plus +            sdb.create_table.urls +            sdb_index.create_indexes +          end +        end        end        if del_id          sql_entry=[ diff --git a/lib/sisu/v6/db_select.rb b/lib/sisu/v6/db_select.rb index 61522e3b..70b7bbbe 100644 --- a/lib/sisu/v6/db_select.rb +++ b/lib/sisu/v6/db_select.rb @@ -91,22 +91,45 @@ module SiSU_DbSelect        if @sql_type==:sqlite \        and (not (FileTest.file?(@db.sqlite.db)) \        or FileTest.zero?(@db.sqlite.db)) -        puts %{no connection with #{@sql_type} database established, you may need to run:\n} \ -        + %{    sisu --#{@sql_type} --createall\n} \ +        puts %{no connection with sqlite database established, you may need to run:\n} \ +        + %{    sisu --sqlite --createall\n} \          + %{  before attempting to populate the database} -        exit +        SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( +          "\n" \ +          + 'Attempting to initialize db' + "\n" \ +          + 'Creating db tables' +        ) +        @sdb.create_table.metadata_and_text +        @sdb.create_table.doc_objects +        @sdb.create_table.endnotes +        @sdb.create_table.endnotes_asterisk +        @sdb.create_table.endnotes_plus +        @sdb.create_table.urls +        @sdb_index.create_indexes        end        if @conn.is_a?(NilClass) -        db=if @sql_type==:sqlite -          puts %{no connection with #{@sql_type} database established, you may need to run:\n} \ -          + %{    sisu --#{@sql_type} --createall\n} \ +        if @sql_type==:sqlite +          puts %{no connection with sqlite database established, you may need to run:\n} \ +          + %{    sisu --sqlite --createall\n} \            + %{  before attempting to populate the database} +          SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:yellow).mark( +            "\n" \ +            + 'Attempting to initialize db' + "\n" \ +            + 'Creating db tables' +          ) +          @sdb.create_table.metadata_and_text +          @sdb.create_table.doc_objects +          @sdb.create_table.endnotes +          @sdb.create_table.endnotes_asterisk +          @sdb.create_table.endnotes_plus +          @sdb.create_table.urls +          @sdb_index.create_indexes            @db.sqlite.db          else -          puts %{no connection with #{@sql_type} database established, you may need to run:\n} \ +          puts %{no connection with pg database established, you may need to run:\n} \            + %{    createdb "#{@db.psql.db}"\n} \            + %{  after that don't forget to run:\n} \ -          + %{    sisu --#{@sql_type} --createall\n} \ +          + %{    sisu --pg --createall\n} \            + %{  before attempting to populate the database}            @db.psql.db          end diff --git a/lib/sisu/v6/utils.rb b/lib/sisu/v6/utils.rb index 6c34a55a..7e915429 100644 --- a/lib/sisu/v6/utils.rb +++ b/lib/sisu/v6/utils.rb @@ -211,6 +211,7 @@ SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).mark({ m: %{  SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).mark(%{ code: #{@@flag['code']}, open --> "#{t_o}" }) \  if t_o=~/^```/m  SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:green).mark("open -->") +SiSU_Utils::CodeMarker.new(__LINE__,__FILE__,:fuchsia).mark("open -->")  SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark("open -->",:green)  SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark(:green,"open -->")  SiSU_Utils::CodeMarker.new(__LINE__,__FILE__).mark("open -->") | 
