SQLite源代码分析----------代码生成器①

2021SC@SDUSC

概述

        SQLite的工作方式是将SQL语句转换为字节码,然后在虚拟机中运行该字节码。本节描述字节码引擎如何工作。

字节码引擎(Bytecode Engine)

        代码生成器创建的字节码程序由虚拟机运行。

        虚拟机本身完全包含在单个源文件vdbe.c中。vdbe.h头文件定义了虚拟机与SQLite库其余部分之间的接口,vdbeInt.h定义了虚拟机本身专用的结构和接口。各种其他vdbe*.c文件是虚拟机的助手。vdbeaux.c文件包含虚拟机使用的实用程序和库的其余部分用于构造VM程序的接口模块。vdbeapi.c文件包含虚拟机的外部接口,如sqlite3_bind_int()和sqlite3_step()。单个值(字符串、整数、浮点数和blob)存储在名为“Mem”的内部对象中,该对象由vdbemem.c实现。

        SQLite使用对C语言例程的回调来实现SQL函数。甚至内置的SQL函数也是这样实现的。大多数内置SQL函数(例如:abs()、count()、substr()等)都可以在func.c源文件中找到。日期和时间转换函数可在Date.c中找到。代码生成器直接将一些函数(如coalesce()和typeof()实现为字节码。

        VDBE全称为虚拟数据库引擎(virtual database engine);它是对真实计算机资源环境的一个抽象。它的原理类似于Java中的JVM(java虚拟机),它们实现了这两种语言跨平台性。

vdbeInt.h代码分析

一些方法和结构体的条件编译和预处理

typedef struct VdbeOp Op;

/*
** Boolean values
*/
typedef unsigned char Bool;

/* Opaque type used by code in vdbesort.c
**Opaque类型被vdbesort.c文件中的代码使用
*/
typedef struct VdbeSorter VdbeSorter;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值