Xian Wang

161 papers A* 11A 3B 4C 8Misc 5Journal 104Unranked 26
YearRankTypeTitle / Venue / Authors
2026 J jnl
Commun. Nonlinear Sci. Numer. Simul.
Bin Zhu, Xian Wang
2026 J jnl
CoRR
Wenbo Gao, Renxi Liu, Xian Wang, Fang Guo, Shuai Yang, Xi Chen, Hui-Ling Zhen, Hanting Chen, Weizhe Lin, Xiaosong Li, Yaoyuan Wang
2026 J jnl
Comput. Mater. Continua
Xuanhong Wang, Hongyu Guo, Jiazhen Li, Mingchen Wang, Xian Wang, Yijun Zhang
2026 J jnl
CoRR
Xian Wang, Xuanru Cheng, Rongkai Shi, Lei Chen, Jingyao Zheng, Hai-Ning Liang, Lik-Hang Lee
2026 J jnl
Complex Intell. Syst.
Xuanhong Wang, Xian Wang, Jiazhen Li, Mingchen Wang, Hongyu Guo, Yijun Zhang
2026 A* conf
AAAI
Ziduo Yang, Yi-Ming Zhao, Xian Wang, Wei Zhuo, Xiaoqing Liu, Lei Shen
2026 J jnl
IEEE Trans. Image Process.
Ruixiang Li, Yiming Wu, Yehao Lu, Xuewei Li, Xian Wang, Xiubo Liang, Xi Li
2026 J jnl
IEEE Robotics Autom. Lett.
Dongcheng Cao, Jin Zhou, Xian Wang, Shuo Li
2026 J jnl
CoRR
Jin Zhou, Dongcheng Cao, Xian Wang, Shuo Li
2026 J jnl
Eng. Appl. Artif. Intell.
Chuliang Liu, Zhiwei Luo, Zhonghe Huang, Yanwei Sang, Xian Wang
2026 J jnl
CoRR
Jingyao Zheng, Xian Wang, Sven Mayer, Lik-Hang Lee
2026 J jnl
Comput. Electron. Agric.
Zhengzhong Li, Hua Zhou, Yinping Zhang, Fangyuan Lu, Xian Wang, Jiaye Li, Yanjun Li, Yangting Hu, Rui Yu
2026 J jnl
Artif. Intell. Medicine
Feng Tian, Xian Wang, Saicong Lu, Jiaxuan Gu, Shitao Zhou, Penghui Li, Zhen Wang, Zengjun Jin, Feifei Zhao, Zhenjie Yang, Longqiang Zhang, Tingting Zhao, Haifang Zhang
2026 J jnl
Int. J. Hum. Comput. Interact.
Xiaohui Liu, Haiyue Yu, Yan Wang, Jun Xu, Panpan Zhou, Xian Wang
2025 J jnl
CoRR
Simin Yang, Xian Wang, Yang Li, Lik-Hang Lee, Tristan Camille, Pan Hui
2025 J jnl
ACM Comput. Surv.
Xian Wang, Luyao Shen, Lik-Hang Lee
2025 J jnl
IEEE Trans Autom. Sci. Eng.
Baorui Jing, Jing Na, Hao Duan, Xian Wang, Yingbo Huang
2025 J jnl
CoRR
Ana M. Bernardos, Xian Wang, Luca Bergesio, Juan A. Besada, José R. Casar
2025 A* conf
ICRA
Xian Wang, Jin Zhou, Yuanli Feng, Jiahao Mei, Jiming Chen, Shuo Li
2025 J jnl
Qual. Reliab. Eng. Int.
Yaqiong Lv, Zheng Pan, Yifan Li, Xian Wang
2025 J jnl
CoRR
Wei Chow, Linfeng Li, Lingdong Kong, Zefeng Li, Qi Xu, Hang Song, Tian Ye, Xian Wang, Jinbin Bai, Shilin Xu, Xiangtai Li, Junting Pan, Shaoteng Liu, Ran Zhou, Tianshu Yang, Songhua Liu
2025 J jnl
Comput. Phys. Commun.
Xiangcheng Sun, Xian Wang
2025 J jnl
Int. J. Hum. Comput. Interact.
Luyao Shen, Xian Wang, Sijia Li, Lik-Hang Lee, Mingming Fan, Pan Hui
2025 J jnl
IEEE Trans. Instrum. Meas.
Chuliang Liu, Zhonghe Huang, Xian Wang
2025 J jnl
IEEE Trans. Image Process.
Xi Yang, Wenjiao Dong, Xian Wang, De Cheng, Nannan Wang
2025 J jnl
CoRR
Dongcheng Cao, Jin Zhou, Xian Wang, Shuo Li
2025 J jnl
CoRR
Wei Chow, Yuan Gao, Linfeng Li, Xian Wang, Qi Xu, Hang Song, Lingdong Kong, Ran Zhou, Yi Zeng, Yidong Cai, Botian Jiang, Shilin Xu, Jiajun Zhang, Minghui Qiu, Xiangtai Li, Tianshu Yang, Siliang Tang, Juncheng Li
2025 A* conf
ISMAR
Chi Sun, Xian Wang, Abhishek Kumar, Chengbin Cui, Lik-Hang Lee
2025 J jnl
CoRR
Chi Sun, Xian Wang, Abhishek Kumar, Chengbin Cui, Lik-Hang Lee
2025 conf
VR Workshops
Chan-In Devin Sio, Yao Yao, Rui Xie, Xian Wang, Chi Sun, Yu-Hin Tang, Choi Chun Ifan Cheung, Andrew Cheung, Lik-Hang Lee
2025 J jnl
CoRR
Xuanru Cheng, Xian Wang, Chi-lok Tai, Lik-Hang Lee
2025 J jnl
IEEE Trans. Vis. Comput. Graph.
Xuanru Cheng, Xian Wang, Chi-lok Tai, Lik-Hang Lee
2025 J jnl
Entropy
Nguyen Thi Trung Tin, Jing Na, Le Thai Nguyen, Xian Wang
2025 A* conf
USENIX Security Symposium
Apostolos Mavrogiannakis, Xian Wang, Ioannis Demertzis, Dimitrios Papadopoulos, Minos N. Garofalakis
2025 J jnl
IACR Cryptol. ePrint Arch.
Apostolos Mavrogiannakis, Xian Wang, Ioannis Demertzis, Dimitrios Papadopoulos, Minos N. Garofalakis
2025 J jnl
Comput. Electron. Agric.
Hailong Che, Hua Zhou, Yinping Zhang, Zhengzhong Li, Xian Wang, Jiaye Li, Jinli Chen, Hui Zhou
2025 J jnl
Comput. Phys. Commun.
Xiangcheng Sun, Keichi Takahashi, Yoichi Shimomura, Hiroyuki Takizawa, Xian Wang
2025 A* conf
ISMAR
Jingyao Zheng, Haodi Weng, Xian Wang, Chengbin Cui, Sven Mayer, Chi-lok Tai, Lik-Hang Lee
2025 J jnl
CoRR
Jingyao Zheng, Haodi Weng, Xian Wang, Chengbin Cui, Sven Mayer, Chi-lok Tai, Lik-Hang Lee
2025 J jnl
CoRR
Zhentao He, Can Zhang, Ziheng Wu, Zhenghao Chen, Yufei Zhan, Yifan Li, Zhao Zhang, Xian Wang, Minghui Qiu
2025 conf
ICC Workshops
Qiushi Wang, Tianzhu Qin, Xian Wang, Jia'ao Liang, Kaining Han, Jianhao Hu
2025 J jnl
CoRR
Xian Wang, Luyao Shen, Lei Chen, Mingming Fan, Lik-Hang Lee
2025 J jnl
IEEE Trans. Vis. Comput. Graph.
Xian Wang, Luyao Shen, Lei Chen, Mingming Fan, Lik-Hang Lee
2025 J jnl
CoRR
Weizhe Lin, Hui-Ling Zhen, Shuai Yang, Xian Wang, Renxi Liu, Hanting Chen, Wangze Zhang, Chuansai Zhou, Yiming Li, Chen Chen, Xing Li, Zhiyuan Yang, Xiaosong Li, Xianzhi Yu, Zhenhua Dong, Mingxuan Yuan, Yunhe Wang
2025 J jnl
Comput. Phys. Commun.
Jose M. Rodriguez Borbon, Xian Wang, Adrián Pérez Diéguez, Khaled Z. Ibrahim, Bryan M. Wong
2025 J jnl
CoRR
Ziheng Wu, Zhenghao Chen, Ruipu Luo, Can Zhang, Yuan Gao, Zhentao He, Xian Wang, Haoran Lin, Minghui Qiu
2025 J jnl
CoRR
Xinyu Ning, Yan Zhuo, Xian Wang, Chan-In Devin Sio, Lik-Hang Lee
2024 J jnl
J. Frankl. Inst.
Baorui Jing, Jing Na, Hao Duan, Yantian Li, Xian Wang, Yingbo Huang
2024 J jnl
J. Sens. Actuator Networks
Ana M. Bernardos, Xian Wang, Luca Bergesio, Juan A. Besada, José R. Casar
2024 J jnl
CoRR
Xian Wang, Jin Zhou, Yuanli Feng, Jiahao Mei, Jiming Chen, Shuo Li
2024 J jnl
IEEE Access
Yue Wang, Fuping Sun, Xian Wang
2024 A* conf
USENIX Security Symposium
Matthew Joslin, Xian Wang, Shuang Hao
2024 J jnl
IEEE Trans. Geosci. Remote. Sens.
Dawei Liu, Mei Zhou, Xiaokai Wang, Zhensheng Shi, Mauricio D. Sacchi, Wenchao Chen, Zhaodan Liu, Xian Wang
2024 J jnl
IEEE Signal Process. Lett.
Xian Wang
2024 J jnl
CoRR
Xiaofu Jin, Wai Tong, Xiaoying Wei, Xian Wang, Emily Kuang, Xiaoyu Mo, Huamin Qu, Mingming Fan
2024 A* conf
CHI
Xiaofu Jin, Wai Tong, Xiaoying Wei, Xian Wang, Emily Kuang, Xiaoyu Mo, Huamin Qu, Mingming Fan
2024 conf
CSCW Companion
Simin Yang, Yuk Hang Tsui, Xian Wang, Ahmad Alhilal, Reza Hadi Mogavi, Xuetong Wang, Pan Hui
2024 J jnl
CoRR
Jingyao Zheng, Xian Wang, Simo Hosio, Xiaoxian Xu, Lik-Hang Lee
2024 J jnl
IEEE Trans. Multim.
Xi Yang, Xian Wang, Liangchen Liu, Nannan Wang, Xinbo Gao
2024 J jnl
Comput. Phys. Commun.
Jose M. Rodriguez Borbon, Xian Wang, Adrián Pérez Diéguez, Khaled Z. Ibrahim, Bryan M. Wong
2024 J jnl
Int. J. Hum. Comput. Interact.
Xian Wang, Lik-Hang Lee, Carlos Bermejo Fernandez, Pan Hui
2024 J jnl
CoRR
Xian Wang, Luyao Shen, Lik-Hang Lee
2023 J jnl
Remote. Sens.
Meilin Cheng, Lei Zhong, Yaoming Ma, Xian Wang, Peizhen Li, Zixin Wang, Yuting Qi
2023 conf
VR Workshops
Shan Jin, Yuyang Wang, Lik-Hang Lee, Xian Wang, Zeming Chen, Boya Dong, Xinyi Luo, Pan Hui
2023 A* conf
CHI
Xiaoying Wei, Yizheng Gu, Emily Kuang, Xian Wang, Beiyan Cao, Xiaofu Jin, Mingming Fan
2023 J jnl
CoRR
Xiaoying Wei, Yizheng Gu, Emily Kuang, Xian Wang, Beiyan Cao, Xiaofu Jin, Mingming Fan
2023 J jnl
Sensors
Ziqi Zheng, Qiaoxia Luo, Xian Wang, Xiaohui Ma, Wei Zhang, Wentan Fang, Xiaolin Chen, Song Huang, Yong Zhou, Weiqing Gao
2023 A* conf
ACM Multimedia
Xian Wang, Xiaoyu Mo, Lik-Hang Lee, Xiaoying Wei, Xiaofu Jin, Mingming Fan, Pan Hui
2023 J jnl
CoRR
Xian Wang, Xiaoyu Mo, Lik-Hang Lee, Xiaoying Wei, Xiaofu Jin, Mingming Fan, Pan Hui
2023 J jnl
IEEE J. Sel. Top. Appl. Earth Obs. Remote. Sens.
Yuting Qi, Lei Zhong, Yaoming Ma, Yunfei Fu, Xian Wang, Peizhen Li
2023 conf
IEEM
Xian Wang, Yaqiong Lv, Yu Liu
2023 J jnl
CoRR
Ziduo Yang, Xian Wang, Yifan Li, Qiujie Lv, Calvin Yu-Chian Chen, Lei Shen
2023 J jnl
IEEE Trans. Geosci. Remote. Sens.
Mijun Zou, Lei Zhong, Yaoming Ma, Xian Wang, Yunfei Fu, Zhongbo Su
2023 J jnl
CoRR
Xian Wang, Lik-Hang Lee, Carlos Bermejo Fernandez, Pan Hui
2023 J jnl
CoRR
Ze Gao, Xiang Li, Changkun Liu, Xian Wang, Anqi Wang, Liang Yang, Yuyang Wang, Pan Hui, Tristan Braud
2023 conf
CCHI
Ze Gao, Xiang Li, Changkun Liu, Xian Wang, Anqi Wang, Liang Yang, Yuyang Wang, Pan Hui, Tristan Braud
2023 J jnl
Eng. Appl. Artif. Intell.
Jialu Han, Xian Wang, Xuebing Yang, Qihui Ling, Wei Liu
2022 J jnl
Frontiers Neurorobotics
Dongyue Sun, Xian Wang, Yingjie Man, Ningdao Deng, Zhaoxin Peng
2022 J jnl
IEEE Signal Process. Lett.
Xian Wang, Lingqiao Liu, Javen Qinfeng Shi
2022 J jnl
IEEE Trans. Instrum. Meas.
Yue Wang, Fuping Sun, Xian Wang, Jinming Hao, Weiping Liu
2022 A* conf
CCS
Xian Wang, Shuang Hao
2022 J jnl
Int. J. Wirel. Mob. Comput.
Zhi Liu, Junting Li, Xian Wang
2022 A conf
ACSAC
Xian Wang
2022 J jnl
Int. J. Digit. Earth
Xian Wang, Lei Zhong, Yaoming Ma
2022 conf
ICAIS (3)
Wei Gan, Xuqiu Chen, Wei Wang, Lu Chen, Jiaxi Wu, Xian Wang, Xin He, Fan Wu
2022 conf
CCHI
Xian Wang, Xiaoyu Mo, Mingming Fan, Lik-Hang Lee, Bertram E. Shi, Pan Hui
2022 J jnl
CoRR
Xian Wang, Xiaoyu Mo, Mingming Fan, Lik-Hang Lee, Bertram E. Shi, Pan Hui
2022 J jnl
J. Comput. Methods Sci. Eng.
Fujian Zhang, Weidong Ye, Guoping Lei, Yingying Liu, Xian Wang
2022 conf
USENIX ATC
Tianxiang Shen, Ji Qi, Jianyu Jiang, Xian Wang, Siyuan Wen, Xusheng Chen, Shixiong Zhao, Sen Wang, Li Chen, Xiapu Luo, Fengwei Zhang, Heming Cui
2022 J jnl
Int. J. Gen. Syst.
Xiaojun Huang, Xian Wang
2022 J jnl
J. Intell. Robotic Syst.
Yang Han, Chunbao Liu, Haohua Xiu, Zhennan Li, Shaopeng Shan, Xian Wang, Luquan Ren, Lei Ren
2022 conf
HAPTICS
Xian Wang, Diego Monteiro, Lik-Hang Lee, Pan Hui, Hai-Ning Liang
2022 J jnl
CoRR
Xian Wang, Diego Monteiro, Lik-Hang Lee, Pan Hui, Hai-Ning Liang
2021 conf
NVMSA
Xian Wang, Deming Zhang, Kaili Zhang, Erya Deng, You Wang, Weisheng Zhao
2021 B conf
ICMI
Diego Monteiro, Hai-Ning Liang, Xian Wang, Wenge Xu, Huawei Tu
2021 conf
AIAM (IEEE)
Xian Wang
2021 C conf
ISCAS
Deming Zhang, Xian Wang, Kaili Zhang, Lang Zeng, You Wang, Bi Wang, Erya Deng, Chuanjie Wang, Peng Wu, Youguang Zhang, Weisheng Zhao
2021 J jnl
Sensors
Ye Li, Dazhi Wang, Shuai Zhou, Xian Wang
2021 J jnl
Frontiers Neurorobotics
Dongyue Sun, Xian Wang, Yonghong Lin, Tianlong Yang, Shixu Wu
2021 J jnl
Comput. Phys. Commun.
Akber Raza, Chengkuan Hong, Xian Wang, Anshuman Kumar, Christian R. Shelton, Bryan M. Wong
2021 J jnl
Complex.
Shichang Han, Xian Wang, Chunxi Yang, Guowei Xie, Zhongcheng Qiu, Chen Wang
2021 A* conf
ICCV
Tao Wang, Yong Li, Jingyang Peng, Yipeng Ma, Xian Wang, Fenglong Song, Youliang Yan
2021 J jnl
CoRR
Tao Wang, Yong Li, Jingyang Peng, Yipeng Ma, Xian Wang, Fenglong Song, Youliang Yan
2021 J jnl
CoRR
Diego Monteiro, Xian Wang, Hai-Ning Liang, Yiyu Cai
2021 conf
CLSW (1)
Xian Wang, Yuelong Wang
2020 conf
ICCT
Junjie Zhang, Qing Liu, Xian Wang, Yufan Fu, Dewei Zhang
2020 J jnl
IEEE Access
Yue Wang, Jin-Ming Hao, Wei-Ping Liu, Xian Wang
2020 C conf
ICMLA
Xian Wang, Lingqiao Liu, Qinfeng Shi
2020 J jnl
IEEE Syst. J.
Xian Wang, Kai Zhang, Shaohua Zhang, Lei Wu
2020 J jnl
CoRR
Diego Monteiro, Hai-Ning Liang, Hongji Li, Yu Fu, Xian Wang
2020 C conf
ICMLA
Xian Wang, Lingqiao Liu, Qinfeng Shi
2020 J jnl
Remote. Sens.
Matthew P. Dannenberg, Xian Wang, Dong Yan, William Kolby Smith
2020 J jnl
CoRR
Daniel Yarnell, Xian Wang
2020 J jnl
IEICE Electron. Express
Xian Wang, Dewei Zhang, Qing Liu, Dalong Lv, Yi Zhang, Shuxing Wang
2019 J jnl
Remote. Sens.
Meilin Cheng, Lei Zhong, Yaoming Ma, Mijun Zou, Nan Ge, Xian Wang, Yuanyuan Hu
2019 J jnl
Int. J. Electron. Secur. Digit. Forensics
Xian Wang, Bing-Zhao Li
2019 J jnl
J. Control. Decis.
Jing Zhao, Sen Jiang, Fei Xie, Xian Wang, Zeyun Li
2019 J jnl
Digit. Signal Process.
Qing Wang, Xian Wang, Hua Chen, Xiaotian Zhu, Wei Liu, Weiqing Yan, Laihua Wang
2019 J jnl
Sensors
Jian Wu, Zhipeng Xu, Xian Wang, Li Wang, Huadong Qiu, Kechao Lu, Wenhong Zhang, Qing Feng, Jun Chen, Lei Yang
2019 J jnl
IEEE Commun. Lett.
Qing Wang, Xian Wang, Hua Chen
2019 J jnl
IEEE Access
Xian Wang, Ying Zhang, Shaohua Zhang, Xue Li, Lei Wu
2019 J jnl
Remote. Sens.
Nan Ge, Lei Zhong, Yaoming Ma, Meilin Cheng, Xian Wang, Mijun Zou, Ziyu Huang
2019 C conf
ICMLA
Xian Wang, Lingqiao Liu, Qinfeng Shi
2019 Misc conf
ICASSP
Qing Wang, Xian Wang, Tongdong Dou, Hua Chen, Xiaohuan Wu
2019 C conf
IAS
Zhirui Liang, Zhengxiang Song, Jianhua Wang, Guogang Zhang, Xian Wang
2019 conf
CISP-BMEI
Zilin Zhang, Haodong Hong, Xian Wang
2018 conf
ICCSP
Xinli Xiong, Guangsheng Zhao, Xian Wang
2018 conf
AIVR
Diego Monteiro, Hai-Ning Liang, Jialin Wang, Luhan Wang, Xian Wang, Yong Yue
2018 J jnl
IEEE Access
Chen Zhao, Shaohua Zhang, Xian Wang, Xue Li, Lei Wu
2018 J jnl
CoRR
Saifuddin Hitawala, Yao Li, Xian Wang, Dongyang Yang
2018 J jnl
Algorithms
Jun Zhao, Xian Wang, Guanbin Gao, Jing Na, Hongping Liu, Fujin Luan
2018 J jnl
Sensors
Liuyang Zhang, Jinju Luo, Xinyu Shen, Chunya Li, Xian Wang, Bei Nie, Huaifang Fang
2017 B conf
SMC
Yeti Li, Xian Wang, Catherine M. Burns
2017 conf
LSMS/ICSEE (3)
Kai Zhang, Xian Wang, Shaohua Zhang
2017 conf
ISPACS
Xian Wang, Qian-Cheng Zhao, Qi-Hui Ling
2017 conf
ISPACS
Qihui Ling, Qianchen Zhao, Xian Wang, Xiaoqiang Yan
2016 J jnl
Circuits Syst. Signal Process.
Bing-Zhao Li, Yan-Li Zhang, Xian Wang, Qi-Yuan Cheng
2016 J jnl
J. Ambient Intell. Humaniz. Comput.
Ana M. Bernardos, Jose M. Sánchez, Javier I. Portillo, Xian Wang, Juan A. Besada, José R. Casar
2016 C conf
VCIP
Jiazhong Chen, Yizhang Li, Yebin Fan, Weimin Wu, Xian Wang, Hua Cao, Yang Chen
2015 J jnl
J. Ambient Intell. Smart Environ.
Xian Wang, Ana M. Bernardos, Juan A. Besada, Eduardo Metola, José R. Casar
2015 J jnl
计算机科学
Shaowei Wang, Jianxun Liu, Buqing Cao, Mingdong Tang, Xian Wang
2014 J jnl
CoRR
Xian Wang, Shaopeng Ma
2014 B conf
WiMob
Hector Cuevas, Ana M. Bernardos, Xian Wang, Luca Bergesio, José R. Casar
2014 B conf
ICIP
Meng Xu, Zhan Ma, Wei Wang, Xian Wang, Haoping Yu
2013 conf
HPCC/EUC
Xian Wang, Jianxun Liu, Buqing Cao, Mingdong Tang
2013 C conf
FUSION
Xian Wang, Ana M. Bernardos, Paula Tarrío, José R. Casar
2013 Misc conf
ICIG
Xian Wang, Jinqiao Wang
2013 C conf
ICCC
Liang Xu, Xian Wang
2013 Misc conf
SenSys
Ana M. Bernardos, Xian Wang, Enrique García, Javier I. Portillo, José R. Casar
2012 J jnl
Circuits Syst. Signal Process.
Jiazhong Chen, Weixue Gao, Zengwei Ju, Tao Xia, Hefei Ling, Changnian Chen, Xian Wang
2012 conf
ICICA (1)
Yu Wu, Hao Wang, Xian Wang, Jianbo Li
2012 Misc conf
DCAI
Xian Wang, Paula Tarrío, Eduardo Metola, Ana M. Bernardos, José R. Casar
2011 conf
HAIS (2)
Paula Tarrío, Ana M. Bernardos, Xian Wang, José R. Casar
2008 conf
CSSE (2)
Deqiang Wang, Xian Wang, Shaoxi Li, Shaofang Zhang
2008 conf
CCTA (1)
Xian Wang, Chunjiang Zhao, Cunjun Li, Liangyun Liu, Wenjiang Huang, Pengxin Wang
2006 J jnl
BMC Bioinform.
Xian Wang, Ao Li, Zhaohui Jiang, Huanqing Feng
2004 Misc conf
AIAI
Tie Feng, Jiachen Zhang, Hongyuan Wang, Xian Wang
2004 conf
ICSM
Tie Feng, Jiachen Zhang, Hongyuan Wang, Xian Wang
2000 J jnl
Pattern Recognit.
Xian Wang, Venu Govindaraju, Sargur N. Srihari
1999 A conf
ICDAR
Xian Wang, Toshio Tsutsumida
1999 A conf
ICDAR
Xian Wang, Venu Govindaraju, Sargur N. Srihari
docs/new-code-binja-schema.md
← Index docs/new-code-binja-schema.md markdown
#################################
###### CODE RELATED TABLES ######
#################################

### CREATE FULL REDB DATABASE
def create_decompiled_binja_with_all_tables(client):
    create_phase1_decompiled_binja_tables(client)

#### CREATE FULL TABLES
def create_phase1_decompiled_binja_tables(client):
    create_function_analysis_error_dbtable(client)
    create_binja_decompiled_dbtable(client)
    create_binja_disassembly_dbtable(client)
    create_binja_cfg_dbtable(client)

#################################
### DECOMPILED BINJA INDIVIDUAL TABLES
#################################
def create_function_analysis_error_dbtable(client):
    client.command("""
    CREATE TABLE IF NOT EXISTS function_analysis_errors_binja (
        sha256 FixedString(64),
        function_name Nullable(String) CODEC(ZSTD(3)),
        function_address UInt64,
        error_location LowCardinality(String) CODEC(ZSTD(3)),
        error_message Nullable(String) CODEC(ZSTD(3)),
        error_details Nullable(String) CODEC(ZSTD(3)),
        error_type Nullable(String) CODEC(ZSTD(3)),
        error_hash FixedString(32), -- MD5, To help identify duplicate errors
        status Enum8('new' = 1, 'investigating' = 2, 'fixed' = 3, 'wontfix' = 4) DEFAULT 'new',
        analysis_date DateTime64(3, 'UTC'),
        PRIMARY KEY (sha256, function_address, error_location)
    )
    ENGINE = MergeTree()
    ORDER BY (sha256, function_address, error_location);
    """)

def create_binja_decompiled_dbtable(client):
    # Create decompiled_functions_content table
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_decompiled_functions_content (
        decompiled_function_hash FixedString(64),
        decompiled_function String CODEC(ZSTD(3)),
        decompiled_function_lower String MATERIALIZED lower(decompiled_function) CODEC(ZSTD(3)),
        function_type Enum8('USER'=1, 'LIBRARY'=2, 'THUNK'=3, 'EXTERNAL'=4, 'UNKNOWN'=5) DEFAULT 'UNKNOWN',  -- NOT NULL TODO: remove THUNK and EXTERNAL
        flattened_score Nullable(Float64),
        mba_score Nullable(Float64),
        analysis_date DateTime64(3, 'UTC'),

        INDEX idx_function_content_token lower(decompiled_function) TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
        --- INDEX idx_text_decompiled_function decompiled_function TYPE text(tokenizer = 'splitByNonAlpha', preprocessor = lower(decompiled_function)) GRANULARITY 64,
        INDEX idx_func_hash decompiled_function_hash TYPE bloom_filter GRANULARITY 1,
    ) ENGINE = ReplacingMergeTree(analysis_date)
    PRIMARY KEY decompiled_function_hash -- TODO: remove is redundant
    ORDER BY decompiled_function_hash;
    """)

    # Create decompiled_functions_references table
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_decompiled_functions_references (
        sha256 FixedString(64),
        sha1 FixedString(40),
        md5 FixedString(32),
        decompiled_function_hash FixedString(64),
        disassembled_function_hash Nullable(FixedString(64)),
        decompiled_function_name LowCardinality(String),
        decompiled_function_prototype LowCardinality(String),
        decompiled_function_address UInt64,
        functions_caller Array(String),
        functions_call Array(String),

        INDEX idx_sha256 sha256 TYPE bloom_filter GRANULARITY 1,
        INDEX idx_func_hash decompiled_function_hash TYPE bloom_filter GRANULARITY 1,
        INDEX idx_func_name decompiled_function_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
        INDEX idx_func_addr decompiled_function_address TYPE minmax GRANULARITY 1,
        analysis_date DateTime64(3, 'UTC')
    ) ENGINE = ReplacingMergeTree(analysis_date)
    ORDER BY (sha256, decompiled_function_hash);
    """)

def create_binja_disassembly_dbtable(client):
    # Create disassembly_functions_content table
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_disassembled_functions_content (
        -- Content hashes for each normalization level
        disassembled_function_hash FixedString(64),             -- This is the hash of the disassembled function without addresses
        
        -- The actual function content at different normalization levels
        disassembled_function String CODEC(ZSTD(3)),
        disassembled_function_no_addresses String CODEC(ZSTD(3)),

        -- Function 
        function_type Enum8('USER'=1, 'LIBRARY'=2, 'THUNK'=3, 'EXTERNAL'=4, 'UNKNOWN'=5) DEFAULT 'UNKNOWN',  -- NOT NULL TODO: remove THUNK and EXTERNAL

        -- Analysis fields
        instructions_count UInt32,
        instructions_types Array(LowCardinality(String)), -- Types of instructions used
        control_flow_count UInt32,                      -- Number of control flow instructions
        memory_access_pattern Array(LowCardinality(String)),  -- Patterns of memory access
        register_usage Array(LowCardinality(String)),         -- Types of registers used
        data_references_count UInt32,                   -- Number of data references
        opcode_frequency_vector Array(Float32),-- Not computed yet
        api_calls_vector Array(Float32),-- Not computed yet
        minhash_signature Array(UInt64),-- Not computed yet
        max_block_size Nullable(UInt32),
        num_calls Nullable(UInt32),
        stack_size Nullable(Int32),
        instruction_type_ratios Array(Float32), -- Not computed yet
        instruction_embedding Array(Float32), -- Not computed yet
        analysis_date DateTime64(3, 'UTC'),

        -- Indexes for each normalization level
        INDEX idx_disasm_ngram disassembled_function TYPE ngrambf_v1(3, 32768, 3, 0) GRANULARITY 1,
        INDEX idx_function_type function_type TYPE set(10) GRANULARITY 1,
        INDEX idx_instr_count instructions_count TYPE minmax GRANULARITY 4

    ) ENGINE = ReplacingMergeTree(analysis_date)
    ORDER BY (disassembled_function_hash);
    """)

    client.command("""
    CREATE TABLE code_binja_disassembled_functions_references
    (
        -- Original fields
        sha256 FixedString(64),
        sha1 FixedString(40),
        md5 FixedString(32),
        disassembled_function_hash FixedString(64),
        decompiled_function_hash Nullable(FixedString(64)),

        disassembled_function_name LowCardinality(String),
        disassembled_function_address UInt64,
        analysis_date DateTime64(3, 'UTC'),
        
        -- New hash fields moved from content table
        ssdeep_disassembly Nullable(String),
        tlsh_disassembly Nullable(FixedString(72)),
        ssdeep_llil Nullable(String),
        tlsh_llil Nullable(FixedString(72)),
        
        -- OPTIMIZED INDEXES for all search patterns
        INDEX idx_func_addr disassembled_function_address TYPE minmax GRANULARITY 1,
        INDEX idx_sha256 sha256 TYPE bloom_filter GRANULARITY 1,
        INDEX idx_tlsh_disasm tlsh_disassembly TYPE bloom_filter GRANULARITY 1,
        INDEX idx_ssdeep_disasm ssdeep_disassembly TYPE bloom_filter GRANULARITY 1,
        INDEX idx_tlsh_llil tlsh_llil TYPE bloom_filter GRANULARITY 1,
        INDEX idx_ssdeep_norm ssdeep_llil TYPE bloom_filter GRANULARITY 1,
        INDEX idx_func_name disassembled_function_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 2
    )
    ENGINE = ReplacingMergeTree(analysis_date)
    -- OPTIMIZED ORDER BY: Primary query pattern first, then hash fields for locality
    ORDER BY (sha256, disassembled_function_hash)
    SETTINGS index_granularity = 8192
    """)

def create_binja_llil_dbtable(client):
    # Create llil_functions_content table
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_llil_functions_content (
        -- Content hashes for each normalization level
        llil_function_hash FixedString(64),             -- sha256_llil This is the hash of the disassembled function without addresses

        -- Function 
        function_type Enum8('USER'=1, 'LIBRARY'=2, 'THUNK'=3, 'EXTERNAL'=4, 'UNKNOWN'=5) DEFAULT 'UNKNOWN',  -- NOT NULL TODO: remove THUNK and EXTERNAL

        -- Analysis fields
        instructions_types_llil Array(LowCardinality(String)), -- Types of instructions used
        control_flow_count_llil UInt32,                      -- Number of control flow instructions
        memory_access_pattern_llil Array(LowCardinality(String)),  -- Patterns of memory access
        register_usage_llil Map(LowCardinality(String), Tuple(UInt32, UInt32)),         -- Types of registers used
        total_reg_reads UInt32,
        total_reg_written UInt32,
        data_references_count UInt32,                   -- Number of data references
        max_block_size Nullable(UInt32),
        num_calls Nullable(UInt32),
        stack_size Nullable(Int32),
        body_llil_vector Array(Tuple(UInt32, Array(UInt16))),
        analysis_date DateTime64(3, 'UTC'),

        -- Indexes for each normalization level
        INDEX function_type_idx function_type TYPE set(10) GRANULARITY 1,
        INDEX idx_reg_usage mapKeys(register_usage_llil) TYPE bloom_filter(0.01) GRANULARITY 1

    ) ENGINE = ReplacingMergeTree(analysis_date)
    ORDER BY llil_function_hash;
    """)

    client.command("""
    CREATE TABLE code_binja_llil_functions_references
    (
        -- Original fields
        sha256 FixedString(64),
        sha1 FixedString(40),
        md5 FixedString(32),
        llil_function_hash Nullable(FixedString(64)),
        disassembled_function_hash FixedString(64),
        
        -- New hash fields moved from content table
        ssdeep_disassembly Nullable(String),
        tlsh_disassembly Nullable(FixedString(72)),
        ssdeep_llil Nullable(String),
        tlsh_llil Nullable(FixedString(72)),

        analysis_date DateTime64(3, 'UTC'),
        
        -- OPTIMIZED INDEXES for all search patterns
        INDEX idx_sha256 sha256 TYPE bloom_filter GRANULARITY 1,
        INDEX idx_tlsh_disasm tlsh_disassembly TYPE bloom_filter GRANULARITY 1,
        INDEX idx_ssdeep_disasm ssdeep_disassembly TYPE bloom_filter GRANULARITY 1,
        INDEX idx_tlsh_llil tlsh_llil TYPE bloom_filter GRANULARITY 1,
        INDEX idx_ssdeep_llil ssdeep_llil TYPE bloom_filter GRANULARITY 1,
    )
    ENGINE = ReplacingMergeTree(analysis_date)
    -- OPTIMIZED ORDER BY: Primary query pattern first, then hash fields for locality
    ORDER BY (sha256, function_address)
    SETTINGS index_granularity = 8192
    """)

def create_binja_cfg_dbtable(client):
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_cfg_blocks_content (
        block_instructions_hash FixedString(64), -- PK
        block_size UInt32,
        instructions_count UInt16,
        branch_type Enum8('DIRECT'=1, 'CONDITIONAL'=2, 'CALL'=3, 'RETURN'=4, 'FALLTHROUGH'=5, 'INDIRECT'=6, 'UNKNOWN'=7),
        block_type Enum8('CODE'=1, 'DATA'=2, 'THUNK'=3),
        flags Array(String),
        analysis_date DateTime64(3, 'UTC'),

        -- Indexes for filtering/analysis
        INDEX idx_branch_type branch_type TYPE set(10) GRANULARITY 4,
        INDEX idx_block_type block_type TYPE set(5) GRANULARITY 4,
        INDEX idx_instr_count instructions_count TYPE minmax GRANULARITY 4,
        INDEX idx_block_size block_size TYPE minmax GRANULARITY 4
    )
    ENGINE = ReplacingMergeTree(analysis_date)
    ORDER BY (block_instructions_hash);
    """)
  
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_cfg_blocks_references (
        sha256 FixedString(64),
        sha1 FixedString(40),
        md5 FixedString(32),
        block_instructions_hash FixedString(64),
        disassembled_function_hash FixedString(64),
        
        -- Address information (for CFG traversal and debugging)
        function_address UInt64,
        block_start_address UInt64,
        block_end_address UInt64,
        
        -- CFG structure (addresses refer to block_start_address)
        predecessor_blocks Array(UInt64),
        successor_blocks Array(UInt64),
        depth UInt16,
        position UInt32,
        
        -- Dominator analysis
        dominators Array(UInt16),
        post_dominators Array(UInt16),
        
        analysis_date DateTime64(3, 'UTC'),
        
        -- OPTIMIZED INDEXES based on query patterns
        INDEX idx_sha256 sha256 TYPE bloom_filter GRANULARITY 1,
        INDEX idx_block_hash block_instructions_hash TYPE bloom_filter GRANULARITY 1,
        INDEX idx_func_hash disassembled_function_hash TYPE bloom_filter GRANULARITY 1,
        INDEX idx_func_addr function_address TYPE minmax GRANULARITY 1,
        INDEX idx_block_start block_start_address TYPE minmax GRANULARITY 1,
        INDEX idx_depth depth TYPE minmax GRANULARITY 4,
        INDEX idx_position position TYPE minmax GRANULARITY 4
    )
    ENGINE = ReplacingMergeTree(analysis_date)
    ORDER BY (sha256, function_address, block_start_address)
    SETTINGS index_granularity = 8192;
    """)

def create_binja_strings_dbtable(client):
    # 1. Raw table - INSERT target
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_strings_raw (
        sha256 FixedString(64),
        string String CODEC(ZSTD(3)),              -- Decoded UTF-8 string (for searching)
        string_raw String CODEC(ZSTD(3)),          -- Raw bytes from binary (ground truth)
        string_encoding LowCardinality(String),    -- Detected/guessed encoding by binja
        string_offset UInt64,
        string_length UInt32,                      -- Length of decoded string
        string_raw_length UInt32,                  -- Length of raw bytes
        string_entropy Float32
    )
    ENGINE = Null;
    """)
   
    # 3a. Target table for reverse lookup (with indexes)
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_strings_by_binary (
        sha256 FixedString(64),
        string_offset UInt64,
        string String CODEC(ZSTD(3)),
        string_raw String CODEC(ZSTD(3)),
        string_encoding LowCardinality(String),
        string_length UInt32,
        string_raw_length UInt32,
        string_entropy Float32,
        
        INDEX idx_sha256 sha256 TYPE bloom_filter GRANULARITY 1,
        INDEX idx_string_ngram lower(string) TYPE ngrambf_v1(3, 32768, 3, 0) GRANULARITY 1,
        --- INDEX idx_string string TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
        --- INDEX idx_string_raw string_raw TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
        INDEX idx_entropy string_entropy TYPE minmax GRANULARITY 4
    )
    ENGINE = ReplacingMergeTree()
    ORDER BY (sha256, string_offset);
    """)
    
    # 3b. Materialized view -> target table
    client.command("""
    CREATE MATERIALIZED VIEW IF NOT EXISTS code_binja_strings_by_binary_mv
    TO code_binja_strings_by_binary
    AS SELECT
        sha256,
        string_offset,
        string,
        string_raw,
        string_encoding,
        string_length,
        string_raw_length,
        string_entropy
    FROM code_binja_strings_raw;
    """)

    client.command("""
    -- 1. Create the new public-only popularity table
    CREATE TABLE mv_string_popularity_public_table (
        string_xxhash64 UInt64,
        sample_count AggregateFunction(uniq, FixedString(64))
    ) ENGINE = AggregatingMergeTree()
    ORDER BY string_xxhash64;
    """)

    client.command("""
    -- 2. Create the MV for new data going forward
    CREATE MATERIALIZED VIEW mv_string_popularity_public
    TO mv_string_popularity_public_table AS
    SELECT
        xxHash64(s.string) AS string_xxhash64,
        uniqState(s.sha256) AS sample_count
    FROM code_binja_strings_raw s
    INNER JOIN catalog_visibility_lookup_v2 v 
        ON s.sha256 = v.sha256 AND v.visibility_scope = 'public'
    GROUP BY string_xxhash64;
    """)

    # client.command("""
    # INSERT INTO mv_string_popularity_public_table
    # SELECT
    #     xxHash64(s.string) AS string_xxhash64,
    #     uniqState(s.sha256) AS sample_count
    # FROM code_binja_strings_by_binary s
    # INNER JOIN catalog_visibility_lookup_v2 v 
    #     ON s.sha256 = v.sha256 AND v.visibility_scope = 'public'
    # GROUP BY string_xxhash64;
    # """)

def create_binja_function_similarity_metrics_dbtable(client):
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_function_similarity_metrics (
        disassembled_function_hash FixedString(64),
        
        -- Complexity metrics
        cyclomatic_complexity Nullable(UInt16),
        
        -- Fuzzy hashes (duplicated from reference tables for performance)
        ssdeep_disassembly Nullable(String),
        tlsh_disassembly Nullable(FixedString(72)),
        ssdeep_llil Nullable(String),
        tlsh_llil Nullable(FixedString(72)),
        
        -- Similarity hashes
        minhash Array(UInt8),
        
        analysis_date DateTime64(3, 'UTC'),
        
        -- Indexes
        INDEX idx_complexity cyclomatic_complexity TYPE minmax GRANULARITY 4,
        INDEX idx_ssdeep_disasm ssdeep_disassembly TYPE bloom_filter GRANULARITY 1,
        INDEX idx_tlsh_disasm tlsh_disassembly TYPE bloom_filter GRANULARITY 1,
        INDEX idx_ssdeep_llil ssdeep_llil TYPE bloom_filter GRANULARITY 1,
        INDEX idx_tlsh_llil tlsh_llil TYPE bloom_filter GRANULARITY 1
    )
    ENGINE = ReplacingMergeTree(analysis_date)
    ORDER BY disassembled_function_hash;
    """)

def create_golang_metadata_dbtable(client):
    client.command("""
    CREATE TABLE IF NOT EXISTS redb_golang_metadata (
        sha256 FixedString(64),
        goresym JSON,
        analysis_date DateTime64(3, 'UTC')
    ) ENGINE = ReplacingMergeTree(analysis_date)
    ORDER BY sha256
    """)