String sql = "insert into users (id,names) values ('3', 'gaowei')";
// 一條插入語(yǔ)句
DEBUG 過(guò)程
SqlInsert有以下幾個(gè)屬性
SqlNodeList keywords;
SqlNode targetTable;
SqlNode source;
SqlNodeList columnList;
SqlInsert 的 targetTable 是users
也就是一開(kāi)始注冊(cè)進(jìn)入rootSchema 中的users 這張表

SqlInsert 的source
也就是我們要插入的數(shù)據(jù)
source 中的內(nèi)容仍然以是一個(gè)SqlBasicCall , VALUES 是他的oprator 操作符

對(duì)于這個(gè)Insert 的targetNameSpace 是一個(gè)tableNameSpace
nameSpace 是一個(gè)點(diǎn)前的操作的上下文,也就是他可以看到的一個(gè)空間,和scope 一樣, 是在特定的操作之下的一個(gè)范圍的限制。 后面會(huì)單獨(dú)在去做這種解析。
在debug 過(guò)程中看到的幾個(gè)table ,這幾個(gè)relOptTable 中都最后含有一個(gè)table對(duì)象,他們的地址都是一樣的,是我們最早在test里面注冊(cè)到meta里面的users 表。 這個(gè)表是直接new 出來(lái)的,override 了抽象類(lèi)AbstractTable的getRowType方法,所以在debug過(guò)程中是以CalciteProcessTest$1的形式出現(xiàn)。 并在在那個(gè)表的實(shí)現(xiàn)中沒(méi)有補(bǔ)足他的任何field, 在debug過(guò)程中會(huì)顯示has no class filed。