diff --git a/default.nix b/default.nix
index 01ecf46..6f306ac 100644
--- a/default.nix
+++ b/default.nix
@@ -88,7 +88,7 @@ lib.makeScope pkgs.newScope (
datasette-settings = self.callPackage (
{ formats }:
(formats.json { }).generate "datasette-settings.json" {
- sql_time_limit_ms = 8000;
+ sql_time_limit_ms = 16000;
}
) { };
datasette-metadata = self.callPackage (
@@ -122,38 +122,18 @@ lib.makeScope pkgs.newScope (
CudaArtifact
s (identified by sha256
)
claiming the same (pname, version, platform)
triple
'';
- sql = ''
- SELECT
- COUNT(DISTINCT sha256) AS conflicts,
- pname.str AS pname,
- ver.str AS ver,
- plat.str AS plat,
- GROUP_CONCAT(name.str, char(10)) AS name,
- GROUP_CONCAT(tag.str, char(10)) AS tag,
- GROUP_CONCAT(h.hash, char(10)) AS sha256
- FROM
- (
- CudaArtifact AS cc,
- Str AS name,
- Str AS pname,
- Str as ver,
- Str as plat,
- Hash as h
- ON cc.name=name.id
- AND cc.pname=pname.id
- AND cc.version = ver.id
- AND cc.platform = plat.id
- AND cc.sha256 = h.id
- )
- LEFT JOIN Str AS tag
- ON
- cc.compat_tag=tag.id
- GROUP BY
- cc.pname, cc.version, cc.platform
- HAVING
- conflicts >= CAST(:min_conflicts AS INTEGER)
- ORDER BY conflicts DESC
+ sql = builtins.readFile ./src/q/summary-cuda-conflicts.sql;
+ };
+ queries.cuda_pnames = {
+ title = "Known CUDA Artifacts";
+ description_html = ''
+ Overview of known CUDA artifacts sorted by pname
'';
+ sql = builtins.readFile ./src/q/summary-cuda-pnames.sql;
+ };
+ queries.cuda_platforms = {
+ title = "CUDA: Supported Platforms ";
+ sql = builtins.readFile ./src/q/summary-cuda-platforms.sql;
};
};
};
diff --git a/src/q/summary-cuda-conflicts.sql b/src/q/summary-cuda-conflicts.sql
new file mode 100644
index 0000000..539e071
--- /dev/null
+++ b/src/q/summary-cuda-conflicts.sql
@@ -0,0 +1,34 @@
+SELECT
+ COUNT(DISTINCT sha256) AS conflicts,
+ pname.str AS pname,
+ ver.str AS ver,
+ plat.str AS plat,
+ GROUP_CONCAT(name.str, char(10)) AS name,
+ GROUP_CONCAT(IFNULL(tag.str, char(0x274C)), char(10)) AS tag,
+ GROUP_CONCAT(h.hash, char(10)) AS sha256
+FROM
+ (
+ CudaArtifact AS cc,
+ Str AS name,
+ Str AS pname,
+ Str as ver,
+ Str as plat,
+ Hash as h ON cc.name = name.id
+ AND cc.pname = pname.id
+ AND cc.version = ver.id
+ AND cc.platform = plat.id
+ AND cc.sha256 = h.id
+ )
+ LEFT JOIN Str AS tag ON cc.compat_tag = tag.id
+GROUP BY
+ cc.pname,
+ cc.version,
+ cc.platform
+HAVING
+ conflicts >= CAST(:min_conflicts AS INTEGER)
+ORDER BY
+ conflicts DESC,
+ cc.pname,
+ cc.version,
+ cc.platform,
+ tag.str
diff --git a/src/q/summary-cuda-platforms.sql b/src/q/summary-cuda-platforms.sql
new file mode 100644
index 0000000..ccac735
--- /dev/null
+++ b/src/q/summary-cuda-platforms.sql
@@ -0,0 +1,73 @@
+WITH PerQuadruple AS (
+ SELECT
+ pname.str AS pname,
+ IFNULL(ver.str, char(0x274C)) AS version,
+ plat.str AS platform,
+ IFNULL(ct.str, char(0x274C)) AS tag,
+ COUNT(DISTINCT sha256.hash) AS uq_sha256s
+ FROM
+ (
+ CudaArtifact AS ca,
+ Str AS pname,
+ Str AS plat,
+ Hash AS sha256 ON ca.pname = pname.id
+ AND ca.platform = plat.id
+ AND sha256.id = ca.sha256
+ )
+ LEFT JOIN Str AS ver ON ver.id = ca.version
+ LEFT JOIN Str AS ct ON ca.compat_tag = ct.id
+ GROUP BY
+ pname.id,
+ version,
+ platform,
+ tag
+ ORDER BY
+ uq_sha256s DESC,
+ pname.str,
+ version,
+ plat.str,
+ tag
+),
+ByPname AS (
+ SELECT
+ pname,
+ REPLACE(GROUP_CONCAT(DISTINCT pq.version), ',', char(10)) AS versions,
+ REPLACE(
+ GROUP_CONCAT(DISTINCT pq.platform),
+ ',',
+ char(10)
+ ) AS platforms,
+ REPLACE(GROUP_CONCAT(DISTINCT pq.tag), ',', char(10)) AS tags,
+ SUM(pq.uq_sha256s) AS uq_sha256s
+ FROM
+ PerQuadruple AS pq
+ GROUP BY
+ pq.pname
+),
+VersionGroups AS (
+ SELECT
+ REPLACE(GROUP_CONCAT(DISTINCT pname), ',', char(10)) AS pnames,
+ versions
+ FROM
+ ByPname AS bp
+ GROUP BY
+ versions
+ ORDER BY
+ LENGTH(pnames) DESC
+),
+PlatformGroups AS (
+ SELECT
+ REPLACE(GROUP_CONCAT(DISTINCT pname), ',', char(10)) AS pnames,
+ platforms
+ FROM
+ ByPname AS bp
+ GROUP BY
+ platforms
+ ORDER BY
+ LENGTH(platforms) DESC,
+ LENGTH(pnames)
+)
+SELECT
+ *
+FROM
+ PlatformGroups
diff --git a/src/q/summary-cuda-pnames.sql b/src/q/summary-cuda-pnames.sql
new file mode 100644
index 0000000..68f2272
--- /dev/null
+++ b/src/q/summary-cuda-pnames.sql
@@ -0,0 +1,87 @@
+WITH PerQuadruple AS (
+ SELECT
+ pname.str AS pname,
+ IFNULL(ver.str, char(0x274C)) AS version,
+ plat.str AS platform,
+ IFNULL(ct.str, char(0x274C)) AS tag,
+ COUNT(DISTINCT sha256.hash) AS uq_sha256s
+ FROM
+ (
+ CudaArtifact AS ca,
+ Str AS pname,
+ Str AS plat,
+ Hash AS sha256 ON ca.pname = pname.id
+ AND ca.platform = plat.id
+ AND sha256.id = ca.sha256
+ )
+ LEFT JOIN Str AS ver ON ver.id = ca.version
+ LEFT JOIN Str AS ct ON ca.compat_tag = ct.id
+ GROUP BY
+ pname.id,
+ version,
+ platform,
+ tag
+ ORDER BY
+ uq_sha256s DESC,
+ pname.str,
+ version,
+ plat.str,
+ tag
+)
+SELECT
+ pname,
+ (
+ SELECT
+ GROUP_CONCAT(x, char(10))
+ FROM
+ (
+ SELECT
+ DISTINCT version AS x
+ FROM
+ PerQuadruple
+ WHERE
+ pname = pq.pname
+ ORDER BY
+ x
+ )
+ ) AS versions,
+ (
+ SELECT
+ GROUP_CONCAT(x, char(10))
+ FROM
+ (
+ SELECT
+ DISTINCT platform AS x
+ FROM
+ PerQuadruple
+ WHERE
+ pname = pq.pname
+ ORDER BY
+ x
+ )
+ ) AS platforms,
+ (
+ SELECT
+ GROUP_CONCAT(x, char(10))
+ FROM
+ (
+ SELECT
+ DISTINCT tag AS x
+ FROM
+ PerQuadruple
+ WHERE
+ pname = pq.pname
+ ORDER BY
+ x
+ )
+ ) AS tags,
+ (
+ SELECT
+ SUM(uq_sha256s)
+ FROM
+ PerQuadruple
+ WHERE
+ pname = pq.pname
+ ) AS uq_sha256s
+FROM
+ PerQuadruple AS pq