@@ -1738,11 +1738,11 @@
1738 1738 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** WEBPAGE: bigbloblist
1739 1739 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1740 1740 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Return a page showing the largest artifacts in the repository in order
1741 1741 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** of decreasing size.
1742 1742 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- ** n=N Show the top N artifacts
1743 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** n=N Show the top N artifacts (default: 250)
1744 1744 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
*/
1745 1745 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
void bigbloblist_page(void){
1746 1746 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
Stmt q;
1747 1747 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int n = atoi(PD("n","250"));
1748 1748 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@@ -1773,11 +1773,11 @@
1773 1773 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
" ORDER BY length(content) DESC"
1774 1774 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
);
1775 1775 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <table cellpadding="2" cellspacing="0" border="1" \
1776 1776 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ class='sortable' data-column-types='NnnttT' data-init-sort='0'>
1777 1777 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <thead><tr><th align="right">Size<th align="right">RID
1778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
- @ <th align="right">Delta From<th>Hash<th>Description<th>Date</tr></thead>
1778 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <th align="right">From<th>Hash<th>Description<th>Date</tr></thead>
1779 1779 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ <tbody>
1780 1780 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
while( db_step(&q)==SQLITE_ROW ){
1781 1781 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
int rid = db_column_int(&q,0);
1782 1782 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zUuid = db_column_text(&q, 1);
1783 1783 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
const char *zDesc = db_column_text(&q, 2);
@@ -1795,10 +1795,105 @@
1795 1795 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
@ </tbody></table>
1796 1796 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
db_finalize(&q);
1797 1797 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_table_sorter();
1798 1798 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
style_finish_page();
1799 1799 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
}
1800 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1801 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ /*
1802 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** WEBPAGE: deltachain
1803 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1804 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** Usage: /deltachain/RID
1805 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ **
1806 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** The RID query parameter is required. Generate a page with a table
1807 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** showing storage characteristics of RID and other artifacts that are
1808 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ** derived from RID via delta.
1809 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ */
1810 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ void deltachain_page(void){
1811 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ Stmt q;
1812 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int id = atoi(PD("name","0"));
1813 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int top;
1814 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i64 nStored = 0;
1815 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ i64 nExpanded = 0;
1816 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+
1817 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ login_check_credentials();
1818 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( !g.perm.Read ){ login_needed(g.anon.Read); return; }
1819 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ top = db_int(id,
1820 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "WITH RECURSIVE chain(aa,bb) AS (\n"
1821 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " SELECT rid, srcid FROM delta WHERE rid=%d\n"
1822 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " UNION ALL\n"
1823 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " SELECT bb, delta.srcid"
1824 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " FROM chain LEFT JOIN delta ON delta.rid=bb"
1825 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE bb IS NOT NULL\n"
1826 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ")\n"
1827 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT aa FROM chain WHERE bb IS NULL",
1828 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ id
1829 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
1830 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_header("Delta Chain Containing Artifact %d", id);
1831 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec(
1832 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "CREATE TEMP TABLE toshow(rid INT, gen INT);\n"
1833 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "WITH RECURSIVE tx(id,px) AS (\n"
1834 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " VALUES(%d,0)\n"
1835 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " UNION ALL\n"
1836 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " SELECT delta.rid, px+1 FROM tx, delta where delta.srcid=tx.id\n"
1837 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " ORDER BY 2\n"
1838 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ ") "
1839 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "INSERT INTO toshow(rid,gen) SELECT id,px FROM tx;",
1840 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ top
1841 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
1842 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_multi_exec("CREATE INDEX toshow_rid ON toshow(rid);");
1843 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ describe_artifacts("IN (SELECT rid FROM toshow)");
1844 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_prepare(&q,
1845 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ "SELECT description.rid, description.uuid, description.summary,"
1846 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " length(blob.content), coalesce(delta.srcid,''),"
1847 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " datetime(description.ctime), toshow.gen, blob.size"
1848 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " FROM description, toshow, blob LEFT JOIN delta ON delta.rid=blob.rid"
1849 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " WHERE description.rid=blob.rid"
1850 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " AND toshow.rid=description.rid"
1851 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ " ORDER BY toshow.gen, description.ctime"
1852 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ );
1853 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <table cellpadding="2" cellspacing="0" border="1" \
1854 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ class='sortable' data-column-types='nNnnttT' data-init-sort='0'>
1855 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <thead><tr><th align="right">Level</th>
1856 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <th align="right">Size<th align="right">RID
1857 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <th align="right">From<th>Hash<th>Description<th>Date</tr></thead>
1858 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <tbody>
1859 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ while( db_step(&q)==SQLITE_ROW ){
1860 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int rid = db_column_int(&q,0);
1861 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zUuid = db_column_text(&q, 1);
1862 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zDesc = db_column_text(&q, 2);
1863 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int sz = db_column_int(&q,3);
1864 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zSrcId = db_column_text(&q,4);
1865 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ const char *zDate = db_column_text(&q,5);
1866 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ int gen = db_column_int(&q,6);
1867 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nExpanded += db_column_int(&q,7);
1868 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ nStored += sz;
1869 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <tr><td align="right">%d(gen)</td>
1870 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td align="right">%d(sz)</td>
1871 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ if( rid==id ){
1872 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td align="right"><b>%d(rid)</b></td>
1873 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }else{
1874 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td align="right">%d(rid)</td>
1875 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1876 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td align="right">%s(zSrcId)</td>
1877 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td> %z(href("%R/info/%!S",zUuid))%S(zUuid)</a> </td>
1878 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td align="left">%h(zDesc)</td>
1879 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td align="left">%z(href("%R/timeline?c=%T",zDate))%s(zDate)</a></td>
1880 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </tr>
1881 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1882 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </tbody></table>
1883 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ db_finalize(&q);
1884 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_table_sorter();
1885 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <p>
1886 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <table border="0" cellspacing="0" cellpadding="0">
1887 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <tr><td>Bytes of content</td><td> </td>
1888 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td align="right">%,lld(nExpanded)</td></tr>
1889 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <tr><td>Bytes stored in repository</td><td></td>
1890 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ <td align="right">%,lld(nStored)</td>
1891 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </table>
1892 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ @ </p>
1893 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ style_finish_page();
1894 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
+ }
1800 1895 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
1801 1896 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
/*
1802 1897 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** COMMAND: test-unsent
1803 1898 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
**
1804 1899 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!
** Usage: %fossil test-unsent
1805 1900 { copied = false; pop = false }, 1000)" :class="copied && 'copied'">Copy link Copied!