module Ouroboros.Consensus.Storage.LeiosDB.Impl.SQLite.Queries
( sql_scan_ebs
, sql_scan_complete_ebs_since
, sql_insert_eb
, sql_lookup_ebBodies
, sql_insert_ebBody
, sql_insert_tx
, sql_filter_missing_txs_json
, sql_find_complete_ebs
, sql_mark_notified_ebs
, sql_decrement_missing_tx_count
, sql_delete_missing_txs
, sql_insert_missing_txs
, sql_init_missing_tx_count
, sql_mark_point_notified
, sql_retrieve_from_ebTxs_json
, sql_lookup_eb_closure
, sql_scan_recent_ebs
, sql_pin_eb
, sql_mark_as_copied
, sql_copy_completeness
, sql_copy_insert_eb
, sql_copy_insert_ebTxs
, sql_copy_insert_txs
, sql_imm_filter_present
, sql_next_pinned_eb
, sql_gc_has_work
, sql_gc_markable
, sql_gc_stage_marked
, sql_gc_mark
, sql_sweep_pick_marked
, sql_gc_ebTxs
, sql_gc_missing_txs
, sql_gc_ebs_by_hash
, sql_sweep_any_marked
, sql_sweep_pick_orphans
, sql_sweep_orphan_txs
, sql_sweep_pop_orphans
, sql_has_unstaged_gc_candidates
, sql_unstaged_gc_candidates_page
, sql_insert_gc_candidates
) where
sql_scan_ebs :: String
sql_scan_ebs :: [Char]
sql_scan_ebs =
[Char]
"SELECT ebSlot, ebHashBytes\n\
\FROM ebs\n\
\ORDER BY ebSlot ASC\n\
\"
sql_scan_complete_ebs_since :: String
sql_scan_complete_ebs_since :: [Char]
sql_scan_complete_ebs_since =
[Char]
"SELECT MAX(ebSlot), ebHashBytes FROM ebs\n\
\WHERE ebSlot >= ?\n\
\ AND ebHashBytes IN\n\
\ (SELECT ebHashBytes FROM ebs WHERE missingTxCount IS NOT NULL AND missingTxCount <= 0)\n\
\GROUP BY ebHashBytes\n\
\"
sql_insert_eb :: String
sql_insert_eb :: [Char]
sql_insert_eb =
[Char]
"INSERT OR IGNORE INTO ebs (ebSlot, ebHashBytes, ebBytesSize) VALUES (?, ?, ?)"
sql_lookup_ebBodies :: String
sql_lookup_ebBodies :: [Char]
sql_lookup_ebBodies =
[Char]
"SELECT txHashBytes, txBytesSize FROM ebTxs\n\
\WHERE ebHashBytes = ?\n\
\ORDER BY txOffset ASC\n\
\"
sql_insert_ebBody :: String
sql_insert_ebBody :: [Char]
sql_insert_ebBody =
[Char]
"INSERT INTO ebTxs (ebHashBytes, txOffset, txHashBytes, txBytesSize) VALUES (?, ?, ?, ?)\n\
\"
sql_insert_tx :: String
sql_insert_tx :: [Char]
sql_insert_tx =
[Char]
"INSERT INTO txs (txHashBytes, txBytes, txBytesSize) VALUES (?, ?, ?)\n\
\"
sql_filter_missing_txs_json :: String
sql_filter_missing_txs_json :: [Char]
sql_filter_missing_txs_json =
[Char]
"SELECT unhex(je.value) FROM json_each(?) je\n\
\WHERE NOT EXISTS (SELECT 1 FROM txs t WHERE t.txHashBytes = unhex(je.value))\n\
\"
sql_find_complete_ebs :: String
sql_find_complete_ebs :: [Char]
sql_find_complete_ebs =
[Char]
"SELECT ebHashBytes, ebSlot FROM ebs WHERE missingTxCount = 0 AND status = 0"
sql_mark_notified_ebs :: String
sql_mark_notified_ebs :: [Char]
sql_mark_notified_ebs =
[Char]
"UPDATE ebs SET missingTxCount = -1 WHERE missingTxCount = 0 AND status = 0"
sql_decrement_missing_tx_count :: String
sql_decrement_missing_tx_count :: [Char]
sql_decrement_missing_tx_count =
[Char]
"UPDATE ebs SET missingTxCount = missingTxCount - 1\n\
\WHERE ebHashBytes IN (SELECT ebHashBytes FROM ebsMissingTxs WHERE txHashBytes = ?)\n\
\ AND status = 0\n\
\"
sql_delete_missing_txs :: String
sql_delete_missing_txs :: [Char]
sql_delete_missing_txs =
[Char]
"DELETE FROM ebsMissingTxs WHERE txHashBytes = ?"
sql_insert_missing_txs :: String
sql_insert_missing_txs :: [Char]
sql_insert_missing_txs =
[Char]
"INSERT OR IGNORE INTO ebsMissingTxs (txHashBytes, ebHashBytes)\n\
\SELECT e.txHashBytes, e.ebHashBytes FROM ebTxs e\n\
\LEFT JOIN txs t ON e.txHashBytes = t.txHashBytes\n\
\WHERE e.ebHashBytes = ? AND t.txHashBytes IS NULL\n\
\"
sql_init_missing_tx_count :: String
sql_init_missing_tx_count :: [Char]
sql_init_missing_tx_count =
[Char]
"UPDATE ebs SET missingTxCount = (\n\
\ SELECT COUNT(*) FROM ebsMissingTxs WHERE ebHashBytes = ?\n\
\) WHERE ebHashBytes = ? AND ebSlot = ?\n\
\RETURNING missingTxCount\n\
\"
sql_mark_point_notified :: String
sql_mark_point_notified :: [Char]
sql_mark_point_notified =
[Char]
"UPDATE ebs SET missingTxCount = -1 WHERE ebSlot = ? AND ebHashBytes = ?"
sql_retrieve_from_ebTxs_json :: String
sql_retrieve_from_ebTxs_json :: [Char]
sql_retrieve_from_ebTxs_json =
[Char]
"SELECT je.value, e.txHashBytes, t.txBytes\n\
\FROM json_each(?2) je\n\
\JOIN ebTxs e ON e.ebHashBytes = ?1 AND e.txOffset = je.value\n\
\LEFT JOIN txs t ON e.txHashBytes = t.txHashBytes\n\
\ORDER BY je.value ASC\n\
\"
sql_lookup_eb_closure :: String
sql_lookup_eb_closure :: [Char]
sql_lookup_eb_closure =
[[Char]] -> [Char]
unlines
[ [Char]
"SELECT ebTx.txHashBytes, tx.txBytes"
, [Char]
"FROM ebTxs as ebTx"
, [Char]
"LEFT JOIN txs as tx ON ebTx.txHashBytes = tx.txHashBytes"
, [Char]
"WHERE ebTx.ebHashBytes = ?"
, [Char]
"ORDER BY ebTx.txOffset ASC"
]
sql_scan_recent_ebs :: String
sql_scan_recent_ebs :: [Char]
sql_scan_recent_ebs =
[Char]
"SELECT MAX(ebSlot), ebHashBytes FROM ebs\n\
\WHERE ebSlot >= ?\n\
\GROUP BY ebHashBytes\n\
\"
sql_pin_eb :: String
sql_pin_eb :: [Char]
sql_pin_eb =
[Char]
"UPDATE ebs SET status = 1 WHERE ebHashBytes = ? AND status IN (0, 3)"
sql_mark_as_copied :: String
sql_mark_as_copied :: [Char]
sql_mark_as_copied =
[Char]
"UPDATE ebs SET status = 2 WHERE ebHashBytes = ? AND status = 1"
sql_copy_completeness :: String
sql_copy_completeness :: [Char]
sql_copy_completeness =
[Char]
"SELECT COUNT(*), COUNT(t.txHashBytes)\n\
\FROM vol.ebTxs e LEFT JOIN vol.txs t ON t.txHashBytes = e.txHashBytes\n\
\WHERE e.ebHashBytes = ?1\n\
\"
sql_copy_insert_eb :: String
sql_copy_insert_eb :: [Char]
sql_copy_insert_eb =
[Char]
"INSERT OR IGNORE INTO ebs (ebSlot, ebHashBytes, ebBytesSize)\n\
\SELECT ebSlot, ebHashBytes, ebBytesSize FROM vol.ebs\n\
\WHERE ebHashBytes = ?1\n\
\ORDER BY ebSlot DESC LIMIT 1\n\
\"
sql_copy_insert_ebTxs :: String
sql_copy_insert_ebTxs :: [Char]
sql_copy_insert_ebTxs =
[Char]
"INSERT OR IGNORE INTO ebTxs (ebHashBytes, txOffset, txHashBytes, txBytesSize)\n\
\SELECT ebHashBytes, txOffset, txHashBytes, txBytesSize FROM vol.ebTxs\n\
\WHERE ebHashBytes = ?1\n\
\"
sql_copy_insert_txs :: String
sql_copy_insert_txs :: [Char]
sql_copy_insert_txs =
[Char]
"INSERT OR IGNORE INTO txs (txHashBytes, txBytes, txBytesSize)\n\
\SELECT t.txHashBytes, t.txBytes, t.txBytesSize FROM vol.txs t\n\
\WHERE t.txHashBytes IN\n\
\ (SELECT txHashBytes FROM vol.ebTxs WHERE ebHashBytes = ?1)\n\
\"
sql_imm_filter_present :: String
sql_imm_filter_present :: [Char]
sql_imm_filter_present =
[Char]
"SELECT unhex(je.value) FROM json_each(?1) je\n\
\WHERE EXISTS (SELECT 1 FROM ebs e WHERE e.ebHashBytes = unhex(je.value))\n\
\"
sql_next_pinned_eb :: String
sql_next_pinned_eb :: [Char]
sql_next_pinned_eb =
[Char]
"SELECT ebHashBytes FROM vol.ebs WHERE status = 1 ORDER BY ebSlot LIMIT ?1"
sql_gc_has_work :: String
sql_gc_has_work :: [Char]
sql_gc_has_work =
[Char]
"SELECT EXISTS (SELECT 1 FROM ebs WHERE status IN (0, 2, 3) AND ebSlot < ?1)"
sql_gc_markable :: String
sql_gc_markable :: [Char]
sql_gc_markable =
[Char]
"c.status IN (0, 2) AND c.ebSlot < ?1\n\
\ AND NOT EXISTS\n\
\ (SELECT 1 FROM ebs live\n\
\ WHERE live.ebHashBytes = c.ebHashBytes\n\
\ AND (live.status = 1 OR live.ebSlot >= ?1))"
sql_gc_stage_marked :: String
sql_gc_stage_marked :: [Char]
sql_gc_stage_marked =
[Char]
"INSERT OR IGNORE INTO gcTxCandidates (txHashBytes)\n\
\SELECT DISTINCT e.txHashBytes FROM ebTxs e\n\
\WHERE e.ebHashBytes IN\n\
\ (SELECT DISTINCT c.ebHashBytes FROM ebs c\n\
\ WHERE "
[Char] -> [Char] -> [Char]
forall a. Semigroup a => a -> a -> a
<> [Char]
sql_gc_markable
[Char] -> [Char] -> [Char]
forall a. Semigroup a => a -> a -> a
<> [Char]
")"
sql_gc_mark :: String
sql_gc_mark :: [Char]
sql_gc_mark =
[Char]
"UPDATE ebs AS c SET status = 3\n\
\WHERE "
[Char] -> [Char] -> [Char]
forall a. Semigroup a => a -> a -> a
<> [Char]
sql_gc_markable
sql_sweep_pick_marked :: String
sql_sweep_pick_marked :: [Char]
sql_sweep_pick_marked =
[Char]
"SELECT DISTINCT cand.ebHashBytes FROM ebs cand\n\
\WHERE cand.status = 3\n\
\ AND NOT EXISTS\n\
\ (SELECT 1 FROM ebs live\n\
\ WHERE live.ebHashBytes = cand.ebHashBytes AND live.status <> 3)\n\
\LIMIT ?1\n\
\"
sql_gc_ebTxs :: String
sql_gc_ebTxs :: [Char]
sql_gc_ebTxs =
[Char]
"DELETE FROM ebTxs WHERE ebHashBytes IN (SELECT unhex(je.value) FROM json_each(?1) je)"
sql_gc_missing_txs :: String
sql_gc_missing_txs :: [Char]
sql_gc_missing_txs =
[Char]
"DELETE FROM ebsMissingTxs WHERE ebHashBytes IN (SELECT unhex(je.value) FROM json_each(?1) je)"
sql_gc_ebs_by_hash :: String
sql_gc_ebs_by_hash :: [Char]
sql_gc_ebs_by_hash =
[Char]
"DELETE FROM ebs WHERE ebHashBytes IN (SELECT unhex(je.value) FROM json_each(?1) je)"
sql_sweep_any_marked :: String
sql_sweep_any_marked :: [Char]
sql_sweep_any_marked =
[Char]
"SELECT EXISTS (SELECT 1 FROM ebs WHERE status = 3)"
sql_sweep_pick_orphans :: String
sql_sweep_pick_orphans :: [Char]
sql_sweep_pick_orphans =
[Char]
"SELECT txHashBytes FROM gcTxCandidates LIMIT ?1"
sql_sweep_orphan_txs :: String
sql_sweep_orphan_txs :: [Char]
sql_sweep_orphan_txs =
[Char]
"DELETE FROM txs\n\
\WHERE txHashBytes IN (SELECT unhex(je.value) FROM json_each(?1) je)\n\
\ AND NOT EXISTS\n\
\ (SELECT 1 FROM ebTxs WHERE ebTxs.txHashBytes = txs.txHashBytes)\n\
\"
sql_sweep_pop_orphans :: String
sql_sweep_pop_orphans :: [Char]
sql_sweep_pop_orphans =
[Char]
"DELETE FROM gcTxCandidates\n\
\WHERE txHashBytes IN (SELECT unhex(je.value) FROM json_each(?1) je)\n\
\"
sql_has_unstaged_gc_candidates :: String
sql_has_unstaged_gc_candidates :: [Char]
sql_has_unstaged_gc_candidates =
[Char]
"SELECT EXISTS (SELECT 1 FROM txs WHERE NOT EXISTS\n\
\ (SELECT 1 FROM ebTxs WHERE ebTxs.txHashBytes = txs.txHashBytes))\n\
\"
sql_unstaged_gc_candidates_page :: String
sql_unstaged_gc_candidates_page :: [Char]
sql_unstaged_gc_candidates_page =
[Char]
"SELECT txHashBytes FROM txs\n\
\WHERE txHashBytes > ?1\n\
\ AND NOT EXISTS (SELECT 1 FROM ebTxs WHERE ebTxs.txHashBytes = txs.txHashBytes)\n\
\ORDER BY txHashBytes LIMIT ?2\n\
\"
sql_insert_gc_candidates :: String
sql_insert_gc_candidates :: [Char]
sql_insert_gc_candidates =
[Char]
"INSERT OR IGNORE INTO gcTxCandidates (txHashBytes)\n\
\SELECT unhex(je.value) FROM json_each(?1) je\n\
\"