Vincenzo Grassi

93 papers A* 1A 5B 3C 2Misc 2Journal 27Unranked 49
YearRankTypeTitle / Venue / Authors
2026 J jnl
J. Syst. Softw.
Mauro Caporuscio, Mirko D'Angelo, Vincenzo Grassi, Raffaela Mirandola, Francesca Ricci
2025 conf
ACSOS
Vincenzo Scotti, Diego Perez-Palacin, Valerio Brauzi, Vincenzo Grassi, Raffaela Mirandola
2025 conf
FormaliSE
Vincenzo Grassi, Raffaela Mirandola, Diego Perez-Palacin
2024 J jnl
J. Syst. Softw.
Vincenzo Grassi, Raffaela Mirandola, Diego Perez-Palacin
2023 conf
ICSA-C
Vincenzo Grassi, Raffaela Mirandola, Diego Perez-Palacin
2023 J jnl
ACM SIGSOFT Softw. Eng. Notes
Danny Weyns, Radu Calinescu, Raffaela Mirandola, Kenji Tei, Maribel Acosta, Amel Bennaceur, Nicolas Boltz, Tomás Bures, Javier Cámara, Ada Diaconescu, Gregor Engels, Simos Gerasimou, Ilias Gerostathopoulos, Sinem Getir Yaman, Vincenzo Grassi, Sebastian Hahner, Emmanuel Letier, Marin Litoiu, Lina Marsso, Angelika Musil, Juergen Musil, Genaína Nunes Rodrigues, Diego Perez-Palacin, Federico Quin, Patrizia Scandurra, Antonio Vallecillo, Andrea Zisman
2022 conf
ICSA Companion
Marcello M. Bersani, Chiara Braghin, Vittorio Cortellessa, Angelo Gargantini, Vincenzo Grassi, F. Lo Presti, Raffaela Mirandola, Alfonso Pierantonio, Elvinia Riccobene, Patrizia Scandurra
2021 J jnl
Computing
Jesper Andersson, Vincenzo Grassi, Raffaela Mirandola, Diego Perez-Palacin
2021 conf
ICSA Companion
Vincenzo Grassi, Raffaela Mirandola
2020 B conf
ECSA
Mauro Caporuscio, Mirko D'Angelo, Vincenzo Grassi, Raffaela Mirandola
2020 J jnl
Future Gener. Comput. Syst.
Mirko D'Angelo, Mauro Caporuscio, Vincenzo Grassi, Raffaela Mirandola
2019 conf
SERENE
Jesper Andersson, Vincenzo Grassi, Raffaela Mirandola, Diego Perez-Palacin
2019 conf
EDGE
Vittoria de Nitto Persone, Vincenzo Grassi
2019 J jnl
IEEE Trans. Parallel Distributed Syst.
Matteo Nardelli, Valeria Cardellini, Vincenzo Grassi, Francesco Lo Presti
2019 J jnl
CoRR
Danny Weyns, Nelly Bencomo, Radu Calinescu, Javier Cámara, Carlo Ghezzi, Vincenzo Grassi, Lars Grunske, Paola Inverardi, Jean-Marc Jézéquel, Sam Malek, Raffaela Mirandola, Marco Mori, Giordano Tamburrelli
2017 J jnl
SIGMETRICS Perform. Evaluation Rev.
Valeria Cardellini, Vincenzo Grassi, Francesco Lo Presti, Matteo Nardelli
2016 J jnl
Math. Program.
Valeria Cardellini, Vittoria de Nitto Persone, Valerio Di Valerio, Francisco Facchinei, Vincenzo Grassi, Francesco Lo Presti, Veronica Piccialli
2016 J jnl
IEEE Trans. Software Eng.
Mauro Caporuscio, Vincenzo Grassi, Moreno Marzolla, Raffaela Mirandola
2016 conf
VALUETOOLS
Valeria Cardellini, Vincenzo Grassi, Francesco Lo Presti, Matteo Nardelli
2016 conf
DEBS
Valeria Cardellini, Vincenzo Grassi, Francesco Lo Presti, Matteo Nardelli
2016 conf
ESOCC
Mauro Caporuscio, Mirko D'Angelo, Vincenzo Grassi, Raffaela Mirandola
2015 conf
ESOCC
Valeria Cardellini, Mirko D'Angelo, Vincenzo Grassi, Moreno Marzolla, Raffaela Mirandola
2015 conf
DEBS
Valeria Cardellini, Vincenzo Grassi, Francesco Lo Presti, Matteo Nardelli
2015 C conf
ISCC
Valeria Cardellini, Vincenzo Grassi, Francesco Lo Presti, Matteo Nardelli
2014 J jnl
Softw. Syst. Model.
Andrea Ciancone, Mauro Luigi Drago, Antonio Filieri, Vincenzo Grassi, Heiko Koziolek, Raffaela Mirandola
2013 conf
Software Engineering for Self-Adaptive Systems
Valeria Cardellini, Emiliano Casalicchio, Vincenzo Grassi, Stefano Iannucci, Francesco Lo Presti, Raffaela Mirandola
2013 conf
Software Engineering for Self-Adaptive Systems
Danny Weyns, Nelly Bencomo, Radu Calinescu, Javier Cámara, Carlo Ghezzi, Vincenzo Grassi, Lars Grunske, Paola Inverardi, Jean-Marc Jézéquel, Sam Malek, Raffaela Mirandola, Marco Mori, Giordano Tamburrelli
2013 J jnl
Int. J. Softw. Informatics
Valeria Cardellini, Valerio Di Valerio, Vincenzo Grassi, Stefano Iannucci, Francesco Lo Presti
2013 A conf
SEAMS
Vincenzo Grassi, Moreno Marzolla, Raffaela Mirandola
2013 conf
Software Engineering for Self-Adaptive Systems
Rogério de Lemos, David Garlan, Carlo Ghezzi, Holger Giese, Jesper Andersson, Marin Litoiu, Bradley R. Schmerl, Danny Weyns, Luciano Baresi, Nelly Bencomo, Yuriy Brun, Javier Cámara, Radu Calinescu, Myra B. Cohen, Alessandra Gorla, Vincenzo Grassi, Lars Grunske, Paola Inverardi, Jean-Marc Jézéquel, Sam Malek, Raffaela Mirandola, Marco Mori, Hausi A. Müller, Romain Rouvoy, Cecília M. F. Rubira, Éric Rutten, Mary Shaw, Giordano Tamburrelli, Gabriel Tamura, Norha M. Villegas, Thomas Vogel, Franco Zambonelli
2012 J jnl
IEEE Trans. Software Eng.
Valeria Cardellini, Emiliano Casalicchio, Vincenzo Grassi, Stefano Iannucci, Francesco Lo Presti, Raffaela Mirandola
2012 ed.
CBSE
Vincenzo Grassi, Raffaela Mirandola, Nenad Medvidovic, Magnus Larsson
2012 ed.
ISARCS
Vincenzo Grassi, Raffaela Mirandola, Jorge Cuéllar, Javier López
2012 ed.
QoSA
Vincenzo Grassi, Raffaela Mirandola, Barbora Buhnova, Antonio Vallecillo
2011 conf
ServiceWave
Valeria Cardellini, Valerio Di Valerio, Vincenzo Grassi, Stefano Iannucci, Francesco Lo Presti
2011 conf
SOSE
Valeria Cardellini, Valerio Di Valerio, Vincenzo Grassi, Stefano Iannucci, Francesco Lo Presti
2011 conf
TOOLS (49)
Andrea Ciancone, Antonio Filieri, Mauro Luigi Drago, Raffaela Mirandola, Vincenzo Grassi
2010 A conf
ICSOC
Valeria Cardellini, Emiliano Casalicchio, Vincenzo Grassi, Francesco Lo Presti
2010 conf
BSME
Valeria Cardellini, Emiliano Casalicchio, Vincenzo Grassi, Francesco Lo Presti
2010 conf
Software Engineering for Self-Adaptive Systems
Danny Weyns, Bradley R. Schmerl, Vincenzo Grassi, Sam Malek, Raffaela Mirandola, Christian Prehofer, Jochen Wuttke, Jesper Andersson, Holger Giese, Karl M. Göschka
2010 conf
ICST Workshops
Diego Perez-Palacin, Raffaela Mirandola, José Merseguer, Vincenzo Grassi
2010 conf
CBSE
Antonio Filieri, Carlo Ghezzi, Vincenzo Grassi, Raffaela Mirandola
2010 conf
Software Engineering for Self-Adaptive Systems
Rogério de Lemos, Holger Giese, Hausi A. Müller, Mary Shaw, Jesper Andersson, Marin Litoiu, Bradley R. Schmerl, Gabriel Tamura, Norha M. Villegas, Thomas Vogel, Danny Weyns, Luciano Baresi, Basil Becker, Nelly Bencomo, Yuriy Brun, Bojan Cukic, Ronald J. Desmarais, Schahram Dustdar, Gregor Engels, Kurt Geihs, Karl M. Göschka, Alessandra Gorla, Vincenzo Grassi, Paola Inverardi, Gabor Karsai, Jeff Kramer, Antónia Lopes, Jeff Magee, Sam Malek, Serge Mankovski, Raffaela Mirandola, John Mylopoulos, Oscar Nierstrasz, Mauro Pezzè, Christian Prehofer, Wilhelm Schäfer, Richard D. Schlichting, Dennis B. Smith, João Pedro Sousa, Ladan Tahvildari, Kenny Wong, Jochen Wuttke
2010 conf
Software Engineering for Self-Adaptive Systems
Rogério de Lemos, Holger Giese, Hausi A. Müller, Mary Shaw, Jesper Andersson, Luciano Baresi, Basil Becker, Nelly Bencomo, Yuriy Brun, Bojan Cukic, Ronald J. Desmarais, Schahram Dustdar, Gregor Engels, Kurt Geihs, Karl M. Göschka, Alessandra Gorla, Vincenzo Grassi, Paola Inverardi, Gabor Karsai, Jeff Kramer, Marin Litoiu, Antónia Lopes, Jeff Magee, Sam Malek, Serge Mankovskii, Raffaela Mirandola, John Mylopoulos, Oscar Nierstrasz, Mauro Pezzè, Christian Prehofer, Wilhelm Schäfer, Richard D. Schlichting, Bradley R. Schmerl, Dennis B. Smith, João Pedro Sousa, Gabriel Tamura, Ladan Tahvildari, Norha M. Villegas, Thomas Vogel, Danny Weyns, Kenny Wong, Jochen Wuttke
2009 C conf
QSHINE
Valeria Cardellini, Emiliano Casalicchio, Vincenzo Grassi, Francesco Lo Presti, Raffaela Mirandola
2009 conf
COP@ECOOP
Andrea Sindico, Vincenzo Grassi
2009 conf
Software Engineering for Self-Adaptive Systems
Vincenzo Grassi, Raffaela Mirandola, Enrico Randazzo
2009 conf
ESEC/SIGSOFT FSE
Valeria Cardellini, Emiliano Casalicchio, Vincenzo Grassi, Francesco Lo Presti, Raffaela Mirandola
2009 conf
Software Engineering for Self-Adaptive Systems
Betty H. C. Cheng, Rogério de Lemos, Holger Giese, Paola Inverardi, Jeff Magee, Jesper Andersson, Basil Becker, Nelly Bencomo, Yuriy Brun, Bojan Cukic, Giovanna Di Marzo Serugendo, Schahram Dustdar, Anthony Finkelstein, Cristina Gacek, Kurt Geihs, Vincenzo Grassi, Gabor Karsai, Holger M. Kienle, Jeff Kramer, Marin Litoiu, Sam Malek, Raffaela Mirandola, Hausi A. Müller, Sooyong Park, Mary Shaw, Matthias Tichy, Massimo Tivoli, Danny Weyns, Jon Whittle
2008 conf
NAOMI@AOSD
Andrea Sindico, Giovanni Bartolomeo, Vincenzo Grassi, Stefano Salsano
2008 B conf
WADS
Valeria Cardellini, Emiliano Casalicchio, Vincenzo Grassi, Francesco Lo Presti, Raffaela Mirandola
2007 conf
CBSE
Vittorio Cortellessa, Vincenzo Grassi
2007 conf
WOSP
Vincenzo Grassi, Raffaela Mirandola, Antonino Sabetta
2007 conf
IW-SOSWE
Valeria Cardellini, Emiliano Casalicchio, Vincenzo Grassi, Francesco Lo Presti
2007 J jnl
J. Syst. Softw.
Vincenzo Grassi, Raffaela Mirandola, Antonino Sabetta
2007 A conf
ICWS
Valeria Cardellini, Emiliano Casalicchio, Vincenzo Grassi, Francesco Lo Presti
2007 conf
CoCoME
Vincenzo Grassi, Raffaela Mirandola, Enrico Randazzo, Antonino Sabetta
2007 ch.
Test and Analysis of Web Services
Vittorio Cortellessa, Vincenzo Grassi
2007 conf
ESSPE
Vincenzo Grassi, Andrea Sindico
2006 conf
SCW
Valeria Cardellini, Emiliano Casalicchio, Vincenzo Grassi, Raffaela Mirandola
2006 conf
CBSE
Vincenzo Grassi, Raffaela Mirandola, Antonino Sabetta
2006 J jnl
IEEE Internet Comput.
Vincenzo Grassi, Simone Patella
2005 conf
MoDELS (Satellite Events)
Antonino Sabetta, Dorina C. Petriu, Vincenzo Grassi, Raffaela Mirandola
2005 conf
QoSA/SOQUA
Vincenzo Grassi, Raffaela Mirandola, Antonino Sabetta
2005 conf
WOSP
Vincenzo Grassi, Raffaela Mirandola, Antonino Sabetta
2005 conf
SFM
Vincenzo Grassi
2004 conf
UML
Vincenzo Grassi, Raffaela Mirandola, Antonino Sabetta
2004 B conf
WADS
Vincenzo Grassi
2004 conf
WOSP
Vincenzo Grassi, Raffaela Mirandola
2004 A conf
MSWiM
Vincenzo Grassi, Raffaela Mirandola, Antonino Sabetta
2003 J jnl
IEEE Trans. Mob. Comput.
Vincenzo Grassi, Raffaela Mirandola
2003 J jnl
IEEE Trans. Intell. Transp. Syst.
Vittoria de Nitto Persone, Vincenzo Grassi
2002 J jnl
J. Log. Algebraic Methods Program.
Vittorio Cortellessa, Vincenzo Grassi
2002 conf
Workshop on Software and Performance
Vincenzo Grassi, Raffaela Mirandola
2002 Misc conf
Performance
Vincenzo Grassi, Vittorio Cortellessa, Raffaela Mirandola
2001 conf
UML
Vincenzo Grassi, Raffaela Mirandola
2000 conf
Workshop on Software and Performance
Vincenzo Grassi, Vittorio Cortellessa
2000 A conf
MSWiM
Vincenzo Grassi
1999 J jnl
Perform. Evaluation
Vittoria de Nitto Persone, Vincenzo Grassi
1998 J jnl
Wirel. Networks
Francesco Lo Presti, Vincenzo Grassi
1998 A* conf
MobiCom
Vittoria de Nitto Persone, Vincenzo Grassi, Antonio Morlupi
1998 J jnl
Comput. Commun.
Vittoria de Nitto Persone, Vincenzo Grassi
1998 J jnl
J. Parallel Distributed Comput.
Michele Colajanni, Vincenzo Grassi, Michele Angelaccio
1997 conf
FTDCS
Michele Cermele, Vincenzo Grassi
1994 J jnl
Acta Informatica
Vincenzo Grassi
1994 Misc conf
EDCC
Cesare Antonelli, Vincenzo Grassi
1992 J jnl
IEEE Trans. Software Eng.
Vincenzo Grassi, Lorenzo Donatiello, Salvatore Tucci
1992 J jnl
Perform. Evaluation
Vincenzo Grassi, Lorenzo Donatiello
1991 conf
FTCS
Vincenzo Grassi
1991 J jnl
IEEE Trans. Computers
Lorenzo Donatiello, Vincenzo Grassi
1987 conf
Computer Performance and Reliability
Lorenzo Donatiello, Vincenzo Grassi, Salvatore Tucci
1987 J jnl
IEEE Trans. Commun.
Bruno Ciciani, Vincenzo Grassi
1987 conf
Computer Performance and Reliability
Bruno Ciciani, Vincenzo Grassi, Giuseppe Iazeolla
docs/apk-code-schema.md
← Index docs/apk-code-schema.md markdown
# APK Code Analysis — ClickHouse Schema

All tables follow the `ReplacingMergeTree(analysis_date)` pattern from
`docs/new-code-binja-schema.md`, except `code_apk_analysis_errors` which
uses `MergeTree()`.

**Companion PDD:** `APK_CODE_ANALYSIS_PDD-Tech_Annex.md` §7

---

## Table overview

| # | Table | Analog (Binja) | Engine | Key |
|---|-------|----------------|--------|-----|
| 1 | `code_apk_decompiled_methods_content` | `code_binja_decompiled_functions_content` | ReplacingMergeTree | `decompiled_method_hash` |
| 2 | `code_apk_decompiled_methods_references` | `code_binja_decompiled_functions_references` | ReplacingMergeTree | `(sha256, decompiled_method_hash)` |
| 3 | `code_apk_smali_methods_content` | `code_binja_disassembled_functions_content` | ReplacingMergeTree | `smali_method_hash` |
| 4 | `code_apk_smali_methods_references` | `code_binja_disassembled_functions_references` | ReplacingMergeTree | `(sha256, smali_method_hash)` |
| 5 | `code_apk_method_similarity_metrics` | `code_binja_function_similarity_metrics` | ReplacingMergeTree | `smali_method_hash` |
| 6 | `code_apk_cfg_methods` | `code_binja_cfg_functions` | ReplacingMergeTree | `smali_method_hash` |
| 7 | `code_binja_strings_raw` *(shared)* | — | Null (→ MV) | — |
| 8 | `code_apk_analysis_errors` | `function_analysis_errors_binja` | MergeTree | `(sha256, error_location, error_hash)` |

---

## Table 1: `code_apk_decompiled_methods_content`

**Analog:** `code_binja_decompiled_functions_content`

```sql
CREATE TABLE IF NOT EXISTS code_apk_decompiled_methods_content (
    decompiled_method_hash FixedString(64),          -- SHA-256 of normalized Java source
    decompiled_method String CODEC(ZSTD(3)),          -- Full Java method source
    decompiled_method_type Enum8('USER'=1, 'LIBRARY'=2, 'UNKNOWN'=5) DEFAULT 'UNKNOWN',
    decompiled_has_string_encryption UInt8 DEFAULT 0,
    decompiled_has_reflection_calls UInt8 DEFAULT 0,
    decompiled_excessive_goto_count UInt8 DEFAULT 0,
    analysis_date DateTime64(3, 'UTC'),

    INDEX idx_method_content_token lower(decompiled_method) TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY decompiled_method_hash;
```

## Table 2: `code_apk_decompiled_methods_references`

**Analog:** `code_binja_decompiled_functions_references`

```sql
CREATE TABLE IF NOT EXISTS code_apk_decompiled_methods_references (
    sha256 FixedString(64),
    decompiled_method_hash FixedString(64),
    smali_method_hash Nullable(FixedString(64)),
    decompiled_class_name LowCardinality(String),
    decompiled_method_name LowCardinality(String),
    decompiled_method_signature String,               -- Dalvik descriptor: (Landroid/os/Bundle;)V
    decompiled_method_prototype String,               -- Java-style: void onCreate(Bundle)
    functions_caller Array(String),
    functions_call Array(String),
    analysis_date DateTime64(3, 'UTC'),

    INDEX idx_decompiled_class_name decompiled_class_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
    INDEX idx_decompiled_method_name decompiled_method_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
    INDEX idx_functions_caller functions_caller TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
    INDEX idx_functions_call functions_call TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY (sha256, decompiled_method_hash);
```

## Table 3: `code_apk_smali_methods_content`

**Analog:** `code_binja_disassembled_functions_content`

```sql
CREATE TABLE IF NOT EXISTS code_apk_smali_methods_content (
    smali_method_hash FixedString(64),                -- SHA-256 of normalized smali body
    smali_method String CODEC(ZSTD(3)),               -- Full smali method body
    smali_method_type Enum8('USER'=1, 'LIBRARY'=2, 'UNKNOWN'=5) DEFAULT 'UNKNOWN',
    smali_instructions_count UInt32,
    smali_register_count UInt16,
    smali_has_string_encryption UInt8 DEFAULT 0,
    smali_has_reflection_calls UInt8 DEFAULT 0,
    smali_excessive_goto_count UInt8 DEFAULT 0,
    smali_flattened_score Float64 DEFAULT 0.0,       -- Control flow flattening score (0.01.0)
    smali_mba_score Float64 DEFAULT 0.0,             -- Mixed boolean-arithmetic score (0.01.0)
    analysis_date DateTime64(3, 'UTC'),

    INDEX idx_smali_ngram smali_method TYPE ngrambf_v1(3, 32768, 3, 0) GRANULARITY 1,
    INDEX idx_smali_method_type smali_method_type TYPE set(3) GRANULARITY 1,
    INDEX idx_smali_instr_count smali_instructions_count TYPE minmax GRANULARITY 4,
    INDEX idx_smali_reg_count smali_register_count TYPE minmax GRANULARITY 4,
    INDEX idx_smali_flattened smali_flattened_score TYPE minmax GRANULARITY 4,
    INDEX idx_smali_mba smali_mba_score TYPE minmax GRANULARITY 4
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY smali_method_hash;
```

## Table 4: `code_apk_smali_methods_references`

**Analog:** `code_binja_disassembled_functions_references`

```sql
CREATE TABLE IF NOT EXISTS code_apk_smali_methods_references (
    sha256 FixedString(64),
    smali_method_hash FixedString(64),
    decompiled_method_hash Nullable(FixedString(64)),
    smali_class_name LowCardinality(String),
    smali_method_name LowCardinality(String),
    smali_method_signature String,
    analysis_date DateTime64(3, 'UTC'),

    INDEX idx_smali_class_name smali_class_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
    INDEX idx_smali_method_name smali_method_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY (sha256, smali_method_hash);
```

## Table 5: `code_apk_method_similarity_metrics`

**Analog:** `code_binja_function_similarity_metrics`

Content-based fuzzy matching table. Structural/CFG scalars (block_count, edge_count, etc.)
are in `code_apk_cfg_methods` (Table 6) — this table holds only fuzzy hashes and MinHash.

```sql
CREATE TABLE IF NOT EXISTS code_apk_method_similarity_metrics (
    smali_method_hash FixedString(64),
    -- Raw smali fuzzy hashes (analog: ssdeep_disassembly / tlsh_disassembly)
    ssdeep_smali Nullable(String),
    tlsh_smali Nullable(FixedString(72)),
    -- Semantically normalized smali fuzzy hashes (analog: ssdeep_llil / tlsh_llil)
    ssdeep_smali_normalized Nullable(String),
    tlsh_smali_normalized Nullable(FixedString(72)),
    minhash Array(UInt8),
    analysis_date DateTime64(3, 'UTC'),

    INDEX idx_ssdeep ssdeep_smali TYPE bloom_filter GRANULARITY 1,
    INDEX idx_tlsh tlsh_smali TYPE bloom_filter GRANULARITY 1,
    INDEX idx_ssdeep_norm ssdeep_smali_normalized TYPE bloom_filter GRANULARITY 1,
    INDEX idx_tlsh_norm tlsh_smali_normalized TYPE bloom_filter GRANULARITY 1
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY smali_method_hash;
```

## Table 6: `code_apk_cfg_methods`

**Analog:** `code_binja_cfg_functions` (see `db_migration/cfg_functions_ddl.sql`)

Structural and topological features computed from smali CFG. All fields mirror
the Binja table with APK-appropriate naming.

```sql
CREATE TABLE IF NOT EXISTS code_apk_cfg_methods (
    -- Identity
    smali_method_hash FixedString(64),

    -- Tier 0: Exact structural match
    cfg_topology_hash FixedString(16),

    -- Tier 1: Structural pre-filtering
    block_count UInt16,
    edge_count UInt16,
    cfg_instructions_count UInt32,            -- Dalvik instruction count (analog: llil_total_operations)
    call_count UInt16,
    cyclomatic_complexity UInt16,
    loop_count UInt16,
    max_depth UInt16,
    max_fan_out UInt16,
    md_index_topdown UInt64,
    md_index_bottomup UInt64,
    prime_product_smali UInt64,              -- Dalvik semantic primes (analog: prime_product_llil)

    -- Tier 2: Fuzzy matching
    cfg_feature_tlsh Nullable(FixedString(72)),
    wl_minhash Array(UInt8),

    -- Embedding-ready storage
    bb_features Array(Array(UInt16)),        -- ACFG block feature vectors
    cfg_adjacency Array(UInt32),             -- Packed (src << 16 | tgt)

    analysis_date DateTime64(3, 'UTC'),

    -- Indexes
    INDEX idx_topology cfg_topology_hash TYPE bloom_filter GRANULARITY 1,
    INDEX idx_complexity cyclomatic_complexity TYPE minmax GRANULARITY 4,
    INDEX idx_block_count block_count TYPE minmax GRANULARITY 4,
    INDEX idx_edge_count edge_count TYPE minmax GRANULARITY 4,
    INDEX idx_call_count call_count TYPE minmax GRANULARITY 4,
    INDEX idx_cfg_instr_count cfg_instructions_count TYPE minmax GRANULARITY 4,
    INDEX idx_loop_count loop_count TYPE minmax GRANULARITY 4,
    INDEX idx_max_depth max_depth TYPE minmax GRANULARITY 4,
    INDEX idx_max_fan_out max_fan_out TYPE minmax GRANULARITY 4,
    INDEX idx_md_topdown md_index_topdown TYPE minmax GRANULARITY 4,
    INDEX idx_md_bottomup md_index_bottomup TYPE minmax GRANULARITY 4,
    INDEX idx_prime prime_product_smali TYPE bloom_filter GRANULARITY 1,
    INDEX idx_cfg_tlsh cfg_feature_tlsh TYPE bloom_filter GRANULARITY 1
) ENGINE = ReplacingMergeTree(analysis_date)
ORDER BY smali_method_hash;
```

**Column mapping (APK → Binja):**

| APK column | Binja column | Notes |
|------------|-------------|-------|
| `smali_method_hash` | `disassembled_function_hash` | Both SHA-256 of normalized code |
| `cfg_instructions_count` | `llil_total_operations` | Dalvik instructions vs LLIL operations |
| `prime_product_smali` | `prime_product_llil` | Same prime algorithm, Dalvik semantic categories |
| All others | Same name | Identical algorithms from shared `cfg_features.py` |

## Table 7: `code_binja_strings_raw` (shared)

APK strings are inserted into the existing `code_binja_strings_raw` Null-engine table,
which feeds materialized views (`code_binja_strings_by_binary`, `mv_string_popularity_public`).
This enables cross-format string correlation between PE/ELF/Mach-O/APK samples.

No new table creation needed — see `docs/new-code-binja-schema.md` for the existing DDL.

## Table 8: `code_apk_analysis_errors`

**Analog:** `function_analysis_errors_binja`

```sql
CREATE TABLE IF NOT EXISTS code_apk_analysis_errors (
    sha256 FixedString(64),
    class_name Nullable(String) CODEC(ZSTD(3)),
    method_name Nullable(String) CODEC(ZSTD(3)),
    error_location LowCardinality(String) CODEC(ZSTD(3)),   -- 'jadx', 'apktool', 'androguard', 'analysis'
    error_message Nullable(String) CODEC(ZSTD(3)),
    error_type Nullable(String) CODEC(ZSTD(3)),
    error_hash FixedString(32),                               -- MD5 for dedup
    status Enum8('new' = 1, 'investigating' = 2, 'fixed' = 3, 'wontfix' = 4) DEFAULT 'new',
    analysis_date DateTime64(3, 'UTC')
) ENGINE = MergeTree()
ORDER BY (sha256, error_location, error_hash);
```