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_prealloc_ebTxBytes
, sql_fill_ebTxBytes
, sql_decrement_missing_tx_count
, 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_ebTxBytes
, sql_imm_filter_present
, sql_next_pinned_eb
, sql_gc_has_work
, sql_gc_markable
, sql_gc_mark
, sql_sweep_pick_marked
, sql_gc_ebTxBytes
, sql_gc_ebTxs
, sql_gc_ebs_by_hash
) 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_prealloc_ebTxBytes :: String
sql_prealloc_ebTxBytes :: [Char]
sql_prealloc_ebTxBytes =
[Char]
"INSERT OR IGNORE INTO ebTxBytes (ebHashBytes, txOffset, filled, txBytes)\n\
\SELECT ebHashBytes, txOffset, 0, zeroblob(txBytesSize) FROM ebTxs\n\
\WHERE ebHashBytes = ?1 ORDER BY txOffset\n\
\"
sql_fill_ebTxBytes :: String
sql_fill_ebTxBytes :: [Char]
sql_fill_ebTxBytes =
[Char]
"UPDATE ebTxBytes SET txBytes = ?3, filled = 1\n\
\WHERE ebHashBytes = ?1 AND txOffset = ?2 AND filled = 0\n\
\ AND length(txBytes) = length(?3)\n\
\"
sql_decrement_missing_tx_count :: String
sql_decrement_missing_tx_count :: [Char]
sql_decrement_missing_tx_count =
[Char]
"UPDATE ebs SET missingTxCount = missingTxCount - ?2\n\
\WHERE ebHashBytes = ?1 AND status = 0 AND missingTxCount IS NOT NULL\n\
\RETURNING ebSlot, missingTxCount\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 ebTxBytes WHERE ebHashBytes = ?1 AND filled = 0\n\
\) WHERE ebHashBytes = ?2 AND ebSlot = ?3\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,\n\
\ CASE WHEN b.filled = 1 THEN b.txBytes END\n\
\FROM json_each(?2) je\n\
\JOIN ebTxs e ON e.ebHashBytes = ?1 AND e.txOffset = je.value\n\
\LEFT JOIN ebTxBytes b ON b.ebHashBytes = ?1 AND b.txOffset = je.value\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, CASE WHEN b.filled = 1 THEN b.txBytes END"
, [Char]
"FROM ebTxs as ebTx"
, [Char]
"LEFT JOIN ebTxBytes as b ON b.ebHashBytes = ebTx.ebHashBytes AND b.txOffset = ebTx.txOffset"
, [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 (SELECT COUNT(*) FROM vol.ebTxs WHERE ebHashBytes = ?1),\n\
\ (SELECT COUNT(*) FROM vol.ebTxBytes WHERE ebHashBytes = ?1 AND filled = 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_ebTxBytes :: String
sql_copy_insert_ebTxBytes :: [Char]
sql_copy_insert_ebTxBytes =
[Char]
"INSERT OR IGNORE INTO ebTxBytes (ebHashBytes, txOffset, filled, txBytes)\n\
\SELECT ebHashBytes, txOffset, filled, txBytes FROM vol.ebTxBytes\n\
\WHERE ebHashBytes = ?1 ORDER BY txOffset\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_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_ebTxBytes :: String
sql_gc_ebTxBytes :: [Char]
sql_gc_ebTxBytes =
[Char]
"DELETE FROM ebTxBytes 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)"