💻 深耕数据库内核架构设计与开发十余年,曾主导多款高性能分布式数据库内核研发,攻克高并发、低延迟等核心技术难题。现倾力打造《从零手写数据库》系列教程,首次系统性公开数据库内核源码级实现细节!
一、概述
两个布尔值之间的运算,如等于,不等于,与,或和非操作,这里只涉及到布尔数据类型,表达式比较的结果也是布尔类型。
二、逻辑运算操作集
布尔类型支持的操作集定义如下。
DataTypeProcs BoolDataTypeProcEntry =
{
DATATYPEPROC_VERSION,
DT_BOOL,
{
,
boolEqualOperator,
NULL,
NULL,
boolNotEqualOperator,
boolAndOperator,
boolOrOperator,
boolNotOperator,
}
};
三、运算处理函数
下面是或操作的实现,获取到左右操作数的值后进行对应的逻辑运算,借助当前编程语言的逻辑运算操作得到结果。
ValuesData* boolOrOperator(ValuesData* leftvalue, ValuesData* rightvalue)
{
int first = 0;
int seconde = 0;
int result = 0;
/* bool or nill = nill */
if(rightvalue == NULL)
returnNULL;
first = leftvalue->dataVal.iData;
seconde = rightvalue->dataVal.iData;
if(first || seconde)
result = 1;
return GetSimpleValueData(DT_BOOL, &result);
}
在逻辑操作中,右操作数可能为会,当真值或假值与空值进行运算时,这里处理结果仍为空值,这需要在结果处理时进行单独判断。
四、总结
新增表达式模块,对应的代码位于exam_49目录的expr.h/expr.c文件当中。
文章转载自开源无限,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




