aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorRalph Amissah <ralph@amissah.com>2014-07-23 18:10:24 -0400
committerRalph Amissah <ralph@amissah.com>2014-07-23 18:10:34 -0400
commit3b753e3d0e6cc20d6fd3984e60c43963c729e89f (patch)
tree7e289e8d354af8d114a244aa22e9da351fca385a
parentv5 v6: version & changelog (& rakefile) (diff)
v5 v6: db, rescue where no tables, attempt to initialize db and retry
* internally run the equivalent of --createall * (if successful) permitting completion of --import or --update command * make use of action triggers
-rw-r--r--data/doc/sisu/CHANGELOG_v56
-rw-r--r--data/doc/sisu/CHANGELOG_v66
-rw-r--r--lib/sisu/v5/db_import.rb73
-rw-r--r--lib/sisu/v5/db_remove.rb90
-rw-r--r--lib/sisu/v5/db_select.rb39
-rw-r--r--lib/sisu/v5/utils.rb1
-rw-r--r--lib/sisu/v6/db_import.rb73
-rw-r--r--lib/sisu/v6/db_remove.rb90
-rw-r--r--lib/sisu/v6/db_select.rb39
-rw-r--r--lib/sisu/v6/utils.rb1
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 -->")