Orla Feely

71 papers B 1C 18Journal 29Unranked 23
YearRankTypeTitle / Venue / Authors
2018 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Eugene Koskin, Dimitri Galayko, Orla Feely, Elena Blokhina
2017 C conf
ISCAS
Eugene Koskin, Dimitri Galayko, Orla Feely, Elena Blokhina
2017 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Panagiotis Giounanlis, Sergi Gorreta, Manuel Domínguez Pumar, Joan Pons-Nin, Orla Feely, Elena Blokhina
2016 conf
NEWCAS
Eugene Koskin, Elena Blokhina, Chuan Shan, Eldar Zianbetov, Orla Feely, Dimitri Galayko
2015 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Dimitri Galayko, Andrii Dudka, Armine Karami, Eoghan O'Riordan, Elena Blokhina, Orla Feely, Philippe Basset
2015 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Eoghan O'Riordan, Andrii Dudka, Dimitri Galayko, Philippe Basset, Orla Feely, Elena Blokhina
2015 J jnl
Int. J. Circuit Theory Appl.
Mark Bradley, Eduard Alarcón, Orla Feely
2015 B conf
IJCNN
Eugene Koskin, Dimitri Galayko, Orla Feely, Elena Blokhina
2015 C conf
ISCAS
Panagiotis Giounanlis, Elena Blokhina, Orla Feely, Loukas Michalas, Matroni Koutsoureli, George J. Papaioannou
2015 C conf
ISCAS
Elena Blokhina, Diarmuid O'Connell, Dennis Andrade-Miceli, Sergi Gorreta-Marine, Joan Pons-Nin, Manuel Domínguez Pumar, Orla Feely, Dimitri Galayko
2015 C conf
ISCAS
Peter Harte, Eoghan O'Riordan, Elena Blokhina, Orla Feely, Dimitri Galayko
2014 conf
ICECS
Boyang Fu, Elena Blokhina, Diarmuid O'Connell, Orla Feely, Ronan Frizzell
2014 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Mark Bradley, Eduard Alarcón, Orla Feely
2014 J jnl
Int. J. Bifurc. Chaos
Peter Harte, Elena Blokhina, Orla Feely, Daniele Fournier-Prunaret, Dimitri Galayko
2014 C conf
ISCAS
Eoghan O'Riordan, Elena Blokhina, Orla Feely, Dimitri Galayko
2014 C conf
ISCAS
Elena Blokhina, Eoghan O'Riordan, Orla Feely, Dimitri Galayko
2014 C conf
ISCAS
Panagiotis Giounanlis, Elena Blokhina, Orla Feely, Sergi Gorreta, Joan Pons-Nin, Manuel Domínguez Pumar
2013 C conf
ISCAS
Elena Blokhina, Daniele Fournier-Prunaret, Peter Harte, Dimitri Galayko, Orla Feely
2013 J jnl
Int. J. Circuit Theory Appl.
Paul F. Curran, Chuang Bi, Orla Feely
2013 conf
ECCTD
Adrian Walsh, Raymond Carley, Orla Feely, Alon Ascoli
2013 conf
ECCTD
Panagiotis Giounanlis, Elena Blokhina, Orla Feely, Manuel Domínguez Pumar, Joan Pons-Nin, Sergi Gorreta
2013 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Elena Blokhina, Dimitri Galayko, Philippe Basset, Orla Feely
2012 C conf
ISCAS
Mark Bradley, Eduard Alarcón, Orla Feely
2012 C conf
ISCAS
Elena Blokhina, Dimitri Galayko, Rhona Wade, Philippe Basset, Orla Feely
2012 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Sergi Gorreta, Daniel Fernández, Elena Blokhina, Joan Pons-Nin, Vicente Jimenez, Diarmuid O'Connell, Orla Feely, Jordi Madrenas, Manuel Domínguez Pumar
2011 conf
ECCTD
Mark Bradley, Orla Feely, Alexey Teplinsky
2011 conf
ECCTD
Chuang Bi, Paul F. Curran, Orla Feely
2011 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Stefan Tertinek, Orla Feely
2010 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Stefan Tertinek, James P. Gleeson, Orla Feely
2010 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Jordi Ricart, Joan Pons-Nin, Elena Blokhina, Sergi Gorreta, Jorge Hernando, Tomas Manzaneque, José Luis Sánchez-Rojas, Orla Feely, Manuel Domínguez Pumar
2010 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Elena Blokhina, Joan Pons, Jordi Ricart, Orla Feely, Manuel Domínguez Pumar
2010 C conf
ISCAS
Elena Blokhina, Orla Feely, Jordi Ricart, Manuel Domínguez Pumar
2010 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Stefan Tertinek, James P. Gleeson, Orla Feely
2009 J jnl
Int. J. Bifurc. Chaos
Elena Blokhina, Orla Feely
2009 C conf
ISCAS
Stefan Tertinek, Orla Feely
2009 C conf
ISCAS
Elena Blokhina, Orla Feely, Manuel Domínguez
2009 conf
ECCTD
Elena Blokhina, Orla Feely, Manuel Domínguez
2009 conf
ECCTD
Chuang Bi, Orla Feely
2008 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Alexey Teplinsky, Orla Feely
2008 conf
ICECS
Carlos Aristoteles De la Cruz-Blas, Orla Feely
2008 C conf
ISCAS
Stefan Tertinek, Alexey Teplinsky, Orla Feely
2007 conf
ECCTD
Raymond Flynn, Orla Feely
2007 J jnl
Int. J. Circuit Theory Appl.
Alon Ascoli, Paul F. Curran, Orla Feely
2007 J jnl
Int. J. Circuit Theory Appl.
Orla Feely
2007 J jnl
Int. J. Circuit Theory Appl.
Orla Feely
2006 C conf
ISCAS
Barry O'Donnell, Paul F. Curran, Orla Feely
2006 C conf
ISCAS
Alexey Teplinsky, Raymond Flynn, Orla Feely
2006 C conf
ISCAS
Alon Ascoli, Orla Feely, Paul F. Curran
2005 conf
ECCTD
Alon Ascoli, Paul F. Curran, Orla Feely
2005 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Alexey Teplinsky, Emer Condon, Orla Feely
2005 conf
ECCTD
Alexey Teplinsky, Raymond Flynn, Orla Feely
2005 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Alon Ascoli, Arnold Mahon, Orla Feely
2005 conf
ECCTD
Barry O'Donnell, Paul F. Curran, Orla Feely
2005 conf
ECCTD
Emer Condon, Paul F. Curran, Ketan Mistry, Orla Feely
2004 conf
ISCAS (1)
Alon Ascoli, Orla Feely
2004 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Ángel Rodríguez-Vázquez, Fernando Medeiro, Orla Feely
2004 J jnl
Int. J. Bifurc. Chaos
Anna Vasylenko, Yuri L. Maistrenko, Orla Feely, Ulrike Feudel
2004 conf
ICECS
Alon Ascoli, Paul F. Curran, Orla Feely
2004 conf
ISCAS (4)
Emer Condon, Orla Feely
2004 conf
ICECS
Barry O'Donnell, Orla Feely, Paul F. Curran, Ketan Mistry
2004 conf
ISCAS (4)
Raymond Flynn, Orla Feely
2002 J jnl
Int. J. Bifurc. Chaos
Anna Vasylenko, Orla Feely
2001 conf
ISCAS (3)
Anna Vasylenko, Orla Feely
2000 J jnl
Int. J. Bifurc. Chaos
Orla Feely, Daniele Fournier-Prunaret, Ina Taralova-Roux, David Fitzgerald
1999 conf
ICECS
Ina Taralova-Roux, Orla Feely
1999 conf
ISCAS (5)
Alexey Teplinsky, Orla Feely
1997 J jnl
Int. J. Circuit Theory Appl.
Orla Feely
1997 J jnl
Int. J. Circuit Theory Appl.
Orla Feely, Richard Schreier
1996 conf
EUSIPCO
Orla Feely, David Fitzgerald
1994 C conf
ISCAS
Orla Feely
1993 J jnl
Int. J. Circuit Theory Appl.
Orla Feely, Leon O. Chua
notebooks/redb-clickhouse-TEST.ipynb
← Index notebooks/redb-clickhouse-TEST.ipynb plaintext
Truncated preview: showing the first 16384 bytes out of 5988848 total.
{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Definitions"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import clickhouse_connect"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "ch_TEST_client = clickhouse_connect.get_client(host='e.rationaledge.io', port=443, username='default', password='werioubTGwvf0-dsbv_', database='redb', verify=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "ch_TEST_BETA_client = clickhouse_connect.get_client(host='k.rationaledge.io', port=443, username='default', password='werioubTGwvf0-dsbv_', database='default', verify=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<bound method HttpClient.close_connections of <clickhouse_connect.driver.httpclient.HttpClient object at 0x105fd64d0>>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ch_TEST_BETA_client.close_connections"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<clickhouse_connect.driver.summary.QuerySummary at 0x11f900810>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "ch_TEST_BETA_client.command(\"\"\"\n",
    "RENAME DATABASE redb TO orig_redb;\n",
    "\"\"\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## DB Creation (schema 2025-08-02)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "ch_TEST_client.command(\"\"\"\n",
    "CREATE DATABASE IF NOT EXISTS redb;\n",
    "\"\"\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Define General Tables"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "### CREATE FULL REDB DATABASE\n",
    "def create_redb_with_all_tables(client):\n",
    "    client.command(\"\"\"\n",
    "        CREATE DATABASE IF NOT EXISTS redb\n",
    "    \"\"\")\n",
    "    create_all_general_tables(client)\n",
    "    create_all_pe_tables(client)\n",
    "\n",
    "#### CREATE FULL TABLES\n",
    "def create_all_general_tables(client):\n",
    "    create_basic_properties_dbtable(client)\n",
    "    create_hashes_dbtable(client)\n",
    "    create_capa_dbtable(client)\n",
    "    create_die_dbtable(client)\n",
    "    create_extra_findings_dbtable(client)\n",
    "\n",
    "\n",
    "##################################\n",
    "#### CREATE INDIVIDUAL TABLES ####\n",
    "##################################\n",
    "\n",
    "#### GENERAL TABLES ####\n",
    "# All tables have SETTINGS index_granularity = 8192\n",
    "def create_basic_properties_dbtable(client):\n",
    "    # Create samples_metadata table\n",
    "    client.command(\"\"\"\n",
    "        CREATE TABLE IF NOT EXISTS redb_basic_properties (\n",
    "            sha256 FixedString(64), -- primary key\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            filename Nullable(String),\n",
    "            sample_name String,\n",
    "            filesize UInt64,\n",
    "            file_entropy Float64,\n",
    "            filetype LowCardinality(String),\n",
    "            filetype_mime LowCardinality(String),\n",
    "            filetype_magika LowCardinality(String),\n",
    "            analysis_date DateTime64(3, 'UTC'),\n",
    "        ) ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        PRIMARY KEY (sha256)\n",
    "        ORDER BY (sha256)\n",
    "    \"\"\")\n",
    "\n",
    "def create_hashes_dbtable(client):\n",
    "    # Create hashes table\n",
    "    client.command(\"\"\"\n",
    "        CREATE TABLE IF NOT EXISTS redb_hashes (\n",
    "            sha256 FixedString(64), -- primary key\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            ssdeep_hash Nullable(String),\n",
    "            tlsh_hash Nullable(String),\n",
    "            authentihash Nullable(String),\n",
    "            imphash Nullable(String),\n",
    "            impfuzzy Nullable(String),\n",
    "            typerefhash Nullable(String),\n",
    "            richhash Nullable(String),\n",
    "            richpe_hash Nullable(String),\n",
    "            richpv_hash Nullable(String),\n",
    "            richpv_hash_sorted Nullable(String),\n",
    "            dhash Nullable(String),\n",
    "            analysis_date DateTime64(3, 'UTC')\n",
    "        ) ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        PRIMARY KEY (sha256)\n",
    "        ORDER BY (sha256)\n",
    "    \"\"\")\n",
    "\n",
    "def create_capa_dbtable(client):\n",
    "    # Create sample_capabilities table\n",
    "    client.command(\"\"\"\n",
    "        SET enable_json_type = 1;\n",
    "    \"\"\")\n",
    "    client.command(\"\"\"\n",
    "        -- Base table for CAPA analysis results\n",
    "        CREATE TABLE IF NOT EXISTS redb_capa (\n",
    "            sha256 FixedString(64),\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            analysis_date DateTime64(3, 'UTC'),\n",
    "            -- Store full JSON dumps as strings for flexibility\n",
    "            capa_dump JSON CODEC(ZSTD(3)),\n",
    "            attack_dump JSON CODEC(ZSTD(3)),\n",
    "            mbc_dump JSON CODEC(ZSTD(3))\n",
    "        ) ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        ORDER BY sha256;\n",
    "    \"\"\")\n",
    "\n",
    "    client.command(\"\"\"\n",
    "        -- Normalized table for capabilities and namespaces\n",
    "        CREATE TABLE IF NOT EXISTS redb_capa_capabilities (\n",
    "            sha256 FixedString(64),\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            analysis_date DateTime64(3, 'UTC'),\n",
    "            namespace LowCardinality(String),\n",
    "            capability LowCardinality(String)\n",
    "        ) ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        ORDER BY (sha256, namespace, capability);\n",
    "    \"\"\")\n",
    "\n",
    "    client.command(\"\"\"\n",
    "        -- Materialized view for capability statistics\n",
    "        CREATE MATERIALIZED VIEW IF NOT EXISTS redb_capa_capabilities_stats (\n",
    "            namespace LowCardinality(String),\n",
    "            capability LowCardinality(String),\n",
    "            samples_bitmap AggregateFunction(groupBitmap, UInt64),\n",
    "            occurrence_count UInt64\n",
    "        ) ENGINE = AggregatingMergeTree()\n",
    "        ORDER BY (namespace, capability)\n",
    "        AS SELECT\n",
    "            namespace,\n",
    "            capability,\n",
    "            groupBitmapState(cityHash64(sha256)) as samples_bitmap,\n",
    "            count() as occurrence_count\n",
    "        FROM redb_capa_capabilities\n",
    "        GROUP BY namespace, capability;\n",
    "    \"\"\")\n",
    "\n",
    "    client.command(\"\"\"\n",
    "        -- Normalized table for MITRE ATT&CK mappings\n",
    "        CREATE TABLE IF NOT EXISTS redb_capa_attack (\n",
    "            sha256 FixedString(64),\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            analysis_date DateTime64(3, 'UTC'),\n",
    "            tactic LowCardinality(String),\n",
    "            technique LowCardinality(String),\n",
    "            technique_id LowCardinality(String)\n",
    "        ) ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        ORDER BY (sha256, tactic, technique_id);\n",
    "    \"\"\")\n",
    "\n",
    "    client.command(\"\"\"\n",
    "        -- Materialized view for ATT&CK statistics\n",
    "        CREATE MATERIALIZED VIEW IF NOT EXISTS redb_capa_attack_stats (\n",
    "            tactic LowCardinality(String),\n",
    "            technique LowCardinality(String),\n",
    "            technique_id LowCardinality(String),\n",
    "            samples_bitmap AggregateFunction(groupBitmap, UInt64),\n",
    "            occurrence_count UInt64\n",
    "        ) ENGINE = AggregatingMergeTree()\n",
    "        ORDER BY (tactic, technique_id)\n",
    "        AS SELECT\n",
    "            tactic,\n",
    "            technique,\n",
    "            technique_id,\n",
    "            groupBitmapState(cityHash64(sha256)) as samples_bitmap,\n",
    "            count() as occurrence_count\n",
    "        FROM redb_capa_attack\n",
    "        GROUP BY tactic, technique, technique_id;\n",
    "    \"\"\")\n",
    "\n",
    "    client.command(\"\"\"\n",
    "        -- Normalized table for MBC mappings\n",
    "        CREATE TABLE IF NOT EXISTS redb_capa_mbc (\n",
    "            sha256 FixedString(64),\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            analysis_date DateTime64(3, 'UTC'),\n",
    "            objective LowCardinality(String),\n",
    "            behavior LowCardinality(String),\n",
    "            behavior_id LowCardinality(String)\n",
    "        ) ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        ORDER BY (sha256, objective, behavior_id);\n",
    "    \"\"\")\n",
    "\n",
    "    client.command(\"\"\"\n",
    "        -- Materialized view for MBC statistics\n",
    "        CREATE MATERIALIZED VIEW IF NOT EXISTS redb_capa_mbc_stats (\n",
    "            objective LowCardinality(String),\n",
    "            behavior LowCardinality(String),\n",
    "            behavior_id LowCardinality(String),\n",
    "            samples_bitmap AggregateFunction(groupBitmap, UInt64),\n",
    "            occurrence_count UInt64\n",
    "        ) ENGINE = AggregatingMergeTree()\n",
    "        ORDER BY (objective, behavior_id)\n",
    "        AS SELECT\n",
    "            objective,\n",
    "            behavior,\n",
    "            behavior_id,\n",
    "            groupBitmapState(cityHash64(sha256)) as samples_bitmap,\n",
    "            count() as occurrence_count\n",
    "        FROM redb_capa_mbc\n",
    "        GROUP BY objective, behavior, behavior_id;\n",
    "    \"\"\")\n",
    "\n",
    "def create_die_dbtable(client):\n",
    "    # Create sample_die table\n",
    "    client.command(\"\"\"\n",
    "        SET enable_json_type = 1;\n",
    "    \"\"\")\n",
    "    client.command(\"\"\"\n",
    "        CREATE TABLE IF NOT EXISTS redb_die (\n",
    "            sha256 FixedString(64),\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            die_info JSON CODEC(ZSTD(3)),\n",
    "            analysis_date DateTime64(3, 'UTC')\n",
    "        ) ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        PRIMARY KEY (sha256)\n",
    "        ORDER BY (sha256)\n",
    "    \"\"\")\n",
    "\n",
    "    client.command(\"\"\"\n",
    "        CREATE MATERIALIZED VIEW redb_die_mv\n",
    "        (\n",
    "            sha256 FixedString(64),\n",
    "            md5 FixedString(32),\n",
    "            sha1 FixedString(40),\n",
    "            analysis_date DateTime64(3, 'UTC'),\n",
    "            compiler LowCardinality(Nullable(String)),\n",
    "            compiler_full Nullable(String),\n",
    "            format LowCardinality(Nullable(String)),\n",
    "            format_full Nullable(String),\n",
    "            installer LowCardinality(Nullable(String)),\n",
    "            installer_full Nullable(String),\n",
    "            joiner LowCardinality(Nullable(String)),\n",
    "            joiner_full Nullable(String),\n",
    "            language LowCardinality(Nullable(String)),\n",
    "            language_full Nullable(String),\n",
    "            library LowCardinality(Nullable(String)),\n",
    "            library_full Nullable(String),\n",
    "            linker LowCardinality(Nullable(String)),\n",
    "            linker_full Nullable(String),\n",
    "            operation_system LowCardinality(Nullable(String)),\n",
    "            operation_system_full Nullable(String),\n",
    "            packer LowCardinality(Nullable(String)),\n",
    "            packer_full Nullable(String),\n",
    "            protector LowCardinality(Nullable(String)),\n",
    "            protector_full Nullable(String),\n",
    "            sfx LowCardinality(Nullable(String)),\n",
    "            sfx_full Nullable(String),\n",
    "            sign_tool LowCardinality(Nullable(String)),\n",
    "            sign_tool_full Nullable(String),\n",
    "            stub LowCardinality(Nullable(String)),\n",
    "            stub_full Nullable(String),\n",
    "            tool LowCardinality(Nullable(String)),\n",
    "            tool_full Nullable(String),   \n",
    "            -- overlay JSON CODEC(ZSTD(3)),\n",
    "            -- resource JSON CODEC(ZSTD(3)),\n",
    "            has_overlay UInt8,\n",
    "            has_resources UInt8,\n",
    "            is_packed UInt8\n",
    "        )\n",
    "        ENGINE = ReplacingMergeTree(analysis_date)\n",
    "        ORDER BY (sha256)\n",
    "        POPULATE\n",
    "        AS SELECT\n",
    "            sha256,\n",
    "            md5,\n",
    "            sha1,\n",
    "            analysis_date,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'compiler'), '') AS compiler,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'compiler(full)'), '') AS compiler_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'format'), '') AS format,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'format(full)'), '') AS format_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'installer'), '') AS installer,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'installer(full)'), '') AS installer_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'joiner'), '') AS joiner,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'joiner(full)'), '') AS joiner_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'language'), '') AS language,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'language(full)'), '') AS language_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'library'), '') AS library,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'library(full)'), '') AS library_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'linker'), '') AS linker,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'linker(full)'), '') AS linker_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'operation_system'), '') AS operation_system,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'operation_system(full)'), '') AS operation_system_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'packer'), '') AS packer,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'packer(full)'), '') AS packer_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'protector'), '') AS protector,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'protector(full)'), '') AS protector_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'sfx'), '') AS sfx,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'sfx(full)'), '') AS sfx_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'sign_tool'), '') AS sign_tool,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'sign_tool(full)'), '') AS sign_tool_full,\n",
    "            nullIf(JSONExtractString(toString(die_info), 'stub'), '') AS stub,\n",
    "            nullIf(JSONExtractString(toString(die_info),