ORCA優化器淺析——CDXLOperator Base class for operators in a DXL tree

在這里插入圖片描述

如上圖所示,CDXLOperator作為Base class for operators in a DXL tree,其子類CDXLLogical、CDXLScalar、CDXLPhysical作為邏輯節點、物理節點和Scalar節點的DXL表示類,因此其包含了這些類的共同部分特性,比如獲取其DXL節點表示的函數GetDXLOperator、獲取其Operator類型的函數GetDXLOperatorType,如下圖右側所示。

class CDXLOperator : public CRefCount {
private:	CDXLOperator(const CDXLOperator &); // private copy constructor
protected:	CMemoryPool *m_mp; // memory pool
public:	explicit CDXLOperator(CMemoryPool *); // ctor/dtorvirtual ~CDXLOperator();	virtual Edxlopid GetDXLOperator() const = 0; // ident accessors	virtual const CWStringConst *GetOpNameStr() const = 0; // name of the operatorvirtual Edxloptype GetDXLOperatorType() const = 0;// serialize operator in DXL format given a serializer object and the// host DXL node, providing access to the operator's childrenvirtual void SerializeToDXL(CXMLSerializer *, const CDXLNode *) const = 0;// check if given column is defined by operatorvirtual BOOL IsColDefined(ULONG	 // colid ) const { // by default, operator does not define columnsreturn false;}static const CWStringConst *GetJoinTypeNameStr(EdxlJoinType);	static const CWStringConst *GetIdxScanDirectionStr(EdxlIndexScanDirection); // Return the index scan direction
};

其中最重要的函數是SerializeToDXL,該函數用于使用給定serializer object將operator序列化成DXL format。而GetOpNameStr函數則是獲取該operator DXL類在DXL format中的標簽,其實就是xml中的標簽,如下代碼所示,CDXLScalarAggref的標簽為CDXLTokens::GetDXLTokenStr(EdxltokenScalarAggref),即為AggFunc。

const CWStringConst *CDXLScalarAggref::GetOpNameStr() const{return CDXLTokens::GetDXLTokenStr(EdxltokenScalarAggref);
}{EdxltokenScalarAggref, GPOS_WSZ_LIT("AggFunc")},

在這里插入圖片描述
operators in a DXL tree僅僅是DXL tree中的一部分,除了Operator DXL節點的標簽,還有其他標簽,比如Comment、Plan、Id等。
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/35493.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/35493.shtml
英文地址,請注明出處:http://en.pswp.cn/news/35493.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Qt 文件對話框使用 Deepin風格

當你在Deepin或UOS 上開發 Qt 程序時,如果涉及到文件對話框功能,那么就會遇到調用原生窗口的問題。 如果你使用的是官方的Qt版本,那么在Deepin或者UOS系統上,彈出的文件對話框會是如下這樣: 而Deepin或UOS系統提供的默…

可視化高級繪圖技巧100篇-總論

前言 優秀的數據可視化作品可以用三個關鍵詞概括:準確、清晰、優雅。 準確:精準地反饋數據的特征信息(既不遺漏也不冗余,不造成讀者疏漏&誤讀細節) 清晰:獲取圖表特征信息的時間越短越好 優雅&…

Gitlab CI/CD筆記-第二天-主機套接字進行構建并push鏡像。

一、安裝gitlab-runner 1.可以是linux也可以是docker的 2.本文說的是docker安裝部署的。 二、直接上.gitlab-ci.yml stages: # List of stages for jobs, and their order of execution - build-image build-image-job: stage: build-image image: harbor.com:543/docke…

企業計算機服務器中了360后綴勒索病毒怎么辦,勒索病毒解密數據恢復

隨著計算機技術的不斷發展,企業的辦公系統得到了很大提升,但是隨之而來的網絡安全威脅也不斷增加,勒索病毒的攻擊事件時有發生。近期,我們收到某地連鎖超市的求助,企業的計算機服務器遭到了360后綴勒索病毒攻擊&#x…

C#四個字節十六進制與單精度浮點數互轉

C#四個字節十六進制與單精度浮點數互轉可以使用自帶的函數,也可以自己寫 實例如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;namespace floatDemo {class Program{//首先設置:項目->屬性…

html練習

html練習 工具代碼運行結果 工具 HBuilder X 代碼 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>圖靈之家</title></head><body><h1>圖靈之家</h1><br><br><h2>我的…

Maxwell 數據同步使用教程

Maxwell 數據同步使用教程 Maxwell 是一個開源的 MySQL 數據同步工具&#xff0c;它可以提供可靠的、實時的數據復制服務。它的特點是將 MySQL 的 binlog 解析成易于理解、易于使用的 JSON 格式&#xff0c;并將其發送到 Kafka 或其他消息隊列&#xff0c;方便消費者進行數據處…

使用幾何和線性代數從單個圖像進行 3D 重建

使用幾何和線性代數從單個圖像進行 3D 重建 薩蒂亞 一、說明 3D重構是一個挑戰性題目&#xff0c;而且這個新穎的題目正處于啟發和膨脹階段&#xff1b;因此&#xff0c;各種各樣的嘗試層出不窮&#xff0c;本篇說明嘗試的一種&#xff0c;至于其它更多的嘗試&#xff0c;我們在…

nlohmann json:通過at讀取及設置object和array

讀取及設置: #include <iostream> #include <nlohmann/json.hpp> using namespace std; using json = nlohmann::json;int main() {json data = R"({"name": "xiaoming","age": 10, "parent": [{"father&qu…

RTT(RT-Thread)IO設備模型

目錄 IO設備模型 模型框架原理 IO設備類型 創建和注冊IO設備 RTT設備管理程序實現原理 訪問IO設備 查找設備 初始化設備 打開設備 關閉設備 控制設備 讀寫設備 數據收發回調 數據接收回調 數據發送回調 設備模型實例 IO設備模型 RT-Thread 提供了一套簡單的 I/O …

網絡編程(TFTP協議實驗)

#include <stdio.h> #include <string.h> #include <stdlib.h> #include <head.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h>#define PORT 69 //端口號&#xf…

網絡安全威脅與防御策略

第一章&#xff1a;引言 隨著數字化時代的快速發展&#xff0c;網絡已經成為人們生活和工作中不可或缺的一部分。然而&#xff0c;網絡的廣泛應用也引發了一系列嚴峻的網絡安全威脅。惡意軟件、網絡攻擊、數據泄露等問題層出不窮&#xff0c;給個人和企業帶來了巨大的風險。本文…

mysql基礎之觸發器的簡單使用

1.建立學生信息表 -- 觸發器 -- 建立學生信息表 create table s1(id int unsigned auto_increment,name varchar(30),score tinyint unsigned,dept varchar(50),primary key(id) );2.建立學生補考信息表 -- 建立學生補考信息表 create table s2 like s1;3.建立觸發器&#xf…

java 自定義xss校驗注解實現

自定義一個注解Xss。名字隨意 import javax.validation.Constraint; import javax.validation.Payload; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Targe…

深入理解與運用Android Jetpack ViewModel

在Android開發中&#xff0c;數據與界面的分離一直是一項重要的挑戰。為了解決這個問題&#xff0c;Google推出了Android Jetpack組件之一的ViewModel。ViewModel是一種用于管理UI相關數據的架構組件&#xff0c;它能夠幫助開發者實現優雅的數據驅動和生命周期管理。本文將深入…

C字符串練習題(6.3.1)

編寫一個程序&#xff0c;從鍵盤上讀入一個小于1000的正整數&#xff0c;然后創建并輸出一個字符串&#xff0c;說明該整數的值。例如&#xff0c;輸入941&#xff0c;程序產生的字符串是“Nine hundred and forty one”。 #include<stdlib.h> #include<string.h>…

前端HTML入門基礎

階段目標&#xff1a;掌握HTML、CSS常用布局技巧&#xff0c;能夠獨立制作網頁。 day01&#xff1a;HTML 基礎 目標&#xff1a;掌握標簽基本語法&#xff0c;能夠獨立布局文章頁。 01-今日課程介紹 今日目標&#xff1a;掌握標簽基本語法&#xff0c;能夠獨立布局文章頁。 核心…

SQL中CONVERT函數格式:CONVERT(data_type,expression[,style])

sqlserver convert()函數的使用方法_convert sqlserver_qq_37528515的博客-CSDN博客 SQL中CONVERT函數格式:CONVERT(data_type,expression[,style]) 說明&#xff1a; data_type:目標系統所提供的數據類型&#xff0c;如果轉換時沒有指定數據類型的長度&#xff0c;則 SQL Serv…

Maven基礎總結

前言 Maven 是一個項目管理工具&#xff0c;可以對 Java 項目進行構建、依賴管理。 基本要求掌握 配置Maven環境直接查。 得會在IDEA創建Maven的java項目吧、會創建Maven的web項目吧、會創建多模塊項目吧。 得會配置插件pligin、依賴dependency吧 一、Maven四大特性 1、…

CSS:服務器字體 與 響應式布局(用法 + 例子 + 效果)

文章目錄 服務器字體定義 服務器字體使用例子 響應式布局設備類型設備特性例子 服務器字體 解決字體不一致而產生的。 首先&#xff0c;在網上把字體下載好。 定義 服務器字體 font-face{font-family:字體名稱;src:url(字體資源路徑); }使用 在需要使用的選擇器里加上 font…