1.SQL语言:DDL、码分DML、码分DQL、码分DCL详解
2.关于 SAP ABAP REPOSRC 数据库表在 HANA 中的码分 DDL Definition
3.Hive Server2对execute和executeQuery的处理
4.DDLçå·¥ä½åç
SQL语言:DDL、DML、码分DQL、码分cesium代码源码分析剖析DCL详解
SQL程序语言的码分四大类操作为:数据定义语言(DDL)、数据查询语言(DQL)、码分数据操纵语言(DML)、码分数据控制语言(DCL)。码分
数据定义语言(DDL)负责定义数据库结构,码分包括创建表、码分聚簇、码分索引、码分视图、码分定时推送源码函数、存储过程和触发器等。其语法主要由CREATE、ALTER、DROP和TRUNCATE构成。
数据操纵语言(DML)负责对数据库进行插入、删除、修改元组的操作,其语法包括insert、update、delete等。
数据查询语言(DQL)用于查询数据库中的数据,最为常用的语句为select。
数据控制语言(DCL)负责授权、gozilla源码解读回收访问数据库的权限,控制数据库事务发生的时间及效果,例如授权、取消授权、回滚、提交等操作。
接下来对SQL的用户操作进行说明:包括创建用户、给用户授权、撤销授权、查看用户权限、删除用户、修改用户密码等。
总结,SQL程序语言的维汉源码四大类操作涵盖了数据库的基本操作,分别是数据定义、查询、操纵和控制。
欢迎关注公众号,免费获取海量学习资源。
历史推荐内容包括视频、源码、文档等。
关于 SAP ABAP REPOSRC 数据库表在 HANA 中的 DDL Definition
点击Show DDL Definition 可以看到DDL Definition 源代码:
理解这段SQL语句之前,需先熟悉SAP HANA数据库。HANA是一个高性能内存数据库,支持复杂数据处理与分析。HANA数据库支持行表与列表存储数据,行表适用于事务处理,王者峡谷源码列表则适合快速数据分析及报告。HANA提供丰富SQL语法,用于管理及查询数据库数据。
这段SQL语句由三部分组成:创建列表、修改表参数及创建全文索引。接下来逐一解析。
第一部分创建名为REPOSRC的列表,属于SAPAG3模式。列表中定义多个列,如PROGNAME列最多字符(NVARCHAR()),默认值为空,不允许NULL值。列表包含复合主键,由PROGNAME和R3STATE两列组成。
UNLOAD PRIORITY 5表示在内存管理中赋予该表数据卸载优先级为5,影响数据从内存移至磁盘顺序。AUTO MERGE指示数据库自动合并表分区,优化性能。
第二部分修改REPOSRC表参数。CONCAT_ATTRIBUTE参数定义如何拼接列值形成唯一标识符,优化查询性能,特别是复杂数据模型处理。
第三部分创建名为REPOSRC~SRC的全文索引,针对DATA列。允许高效全文搜索文本数据。索引为异步创建,减少即时性能影响。语言检测设为英语,用于指导处理文本数据语言类型。全文索引关闭模糊搜索、搜索优化及文本分析等选项,以满足特定性能或功能需求。
综上所述,这段SQL语句设计体现HANA内存数据库高效数据存储与检索能力。通过精心设计的列表结构、优化表参数及全文索引创建,旨在提高特定数据模型处理性能与查询效率。设计考虑存储效率、访问速度与可维护性,充分利用HANA强大内存计算能力。
Hive Server2对execute和executeQuery的处理
实现SparkSQL的SQL Server服务时,需兼容Hive的JDBC Driver,以便通过beeline连接服务。Java的JDBC标准提供execute和executeQuery两类接口。execute用于DDL(数据定义语言)操作,返回true/false,而executeQuery则处理查询,返回ResultSet结果集。
在thrift接口实现中,对DDL操作,直接将结果置空并设置setHasResultSet为false。然而,beeline客户端始终显示错误,因为其使用了beeline的JDBC驱动。通过源码调试发现,在Hive的JDBC实现中,executeQuery直接调用execute。如果返回false,则抛出异常:The query did not generate a result set!
在执行SQL后,beeline客户端会通过GetOperationStatus获取操作状态。在类似while true的循环中,直到操作结束,开始获取结果集。关键在于,如果isHasResultSet为false,execute会直接抛出异常。因此,isHasResultSet必须返回true,后端在封装thrift结果集时,需调整逻辑。
通常,设置setHasResultSet为false且设置setHasResultSetIsSet为true即可。但实践中发现,两者关联影响结果。最终解决方案是,对无结果集的DDL执行,手动生成相应返回。
Hive在处理execute和executeQuery时,存在实现上的不完美之处。
DDLçå·¥ä½åç
DLL综述DLLæ¯Dynamic Link Libraryç缩åï¼æ为å¨æé¾æ¥åºãå¨Windowsä¸ï¼è®¸å¤åºç¨ç¨åºå¹¶ä¸æ¯ä¸ä¸ªå®æ´çå¯æ§è¡æ件ï¼å®ä»¬è¢«åå²æä¸äºç¸å¯¹ç¬ç«çå¨æé¾æ¥åºï¼å³DLLæ件ï¼æ¾ç½®äºç³»ç»ä¸ãå½æ们æ§è¡æä¸ä¸ªç¨åºæ¶ï¼ç¸åºçDLLæ件就ä¼è¢«è°ç¨ãä¸ä¸ªåºç¨ç¨åºå¯æå¤ä¸ªDLLæ件ï¼ä¸ä¸ªDLLæ件ä¹å¯è½è¢«å 个åºç¨ç¨åºæå ±ç¨ï¼è¿æ ·çDLLæä»¶è¢«ç§°ä¸ºå ±äº«DLLæ件ã å®å 许ç¨åºå ±äº«æ§è¡ç¹æ®ä»»å¡æå¿ éç代ç åå ¶ä»èµæº.æ¯è¾å¤§çåºç¨ç¨åºé½ç±å¾å¤æ¨¡åç»æï¼è¿äºæ¨¡ååå«å®æç¸å¯¹ç¬ç«çåè½ï¼å®ä»¬å½¼æ¤åä½æ¥å®ææ´ä¸ªè½¯ä»¶ç³»ç»çå·¥ä½ãå¯è½åå¨ä¸äºæ¨¡åçåè½è¾ä¸ºéç¨ï¼å¨æé å ¶å®è½¯ä»¶ç³»ç»æ¶ä»ä¼è¢«ä½¿ç¨ãå¨æé 软件系ç»æ¶ï¼å¦æå°ææ模åçæºä»£ç é½éæç¼è¯å°æ´ä¸ªåºç¨ç¨åº EXE æ件ä¸ï¼ä¼äº§çä¸äºé®é¢ï¼ä¸ä¸ªç¼ºç¹æ¯å¢å äºåºç¨ç¨åºç大å°ï¼å®ä¼å ç¨æ´å¤çç£ç空é´ï¼ç¨åºè¿è¡æ¶ä¹ä¼æ¶èè¾å¤§çå å空é´ï¼é æç³»ç»èµæºç浪费ï¼å¦ä¸ä¸ªç¼ºç¹æ¯ï¼å¨ç¼å大ç EXE ç¨åºæ¶ï¼å¨æ¯æ¬¡ä¿®æ¹é建æ¶é½å¿ é¡»è°æ´ç¼è¯æææºä»£ç ï¼å¢å äºç¼è¯è¿ç¨çå¤ææ§ï¼ä¹ä¸å©äºé¶æ®µæ§çåå æµè¯ã Windows ç³»ç»å¹³å°ä¸æä¾äºä¸ç§å®å ¨ä¸åçè¾ææçç¼ç¨åè¿è¡ç¯å¢ï¼ä½ å¯ä»¥å°ç¬ç«çç¨åºæ¨¡åå建为è¾å°ç DLL æ件ï¼å¹¶å¯å¯¹å®ä»¬åç¬ç¼è¯åæµè¯ãå¨è¿è¡æ¶ï¼åªæå½ EXE ç¨åºç¡®å®è¦è°ç¨è¿äº DLL 模åçæ åµä¸ï¼ç³»ç»æä¼å°å®ä»¬è£ è½½å°å å空é´ä¸ãè¿ç§æ¹å¼ä¸ä» åå°äº EXE æ件ç大å°å对å å空é´çéæ±ï¼èä¸ä½¿è¿äº DLL 模åå¯ä»¥åæ¶è¢«å¤ä¸ªåºç¨ç¨åºä½¿ç¨ãWindows èªå·±å°±å°ä¸äºä¸»è¦çç³»ç»åè½ä»¥ DLL 模åçå½¢å¼å®ç°ã ä¸è¬æ¥è¯´ï¼DLL æ¯ä¸ç§ç£çæ件ï¼ä»¥.dllã.DRVã.FONã.SYS å许å¤ä»¥ .EXE 为æ©å±åçç³»ç»æ件é½å¯ä»¥æ¯ DLLãå®ç±å ¨å±æ°æ®ãæå¡å½æ°åèµæºç»æï¼å¨è¿è¡æ¶è¢«ç³»ç»å è½½å°è°ç¨è¿ç¨çèæ空é´ä¸ï¼æ为è°ç¨è¿ç¨çä¸é¨åãå¦æä¸å ¶å® DLL ä¹é´æ²¡æå²çªï¼è¯¥æ件é常æ å°å°è¿ç¨èæ空é´çåä¸å°åä¸ãDLL 模åä¸å å«åç§å¯¼åºå½æ°ï¼ç¨äºåå¤çæä¾æå¡ãDLL å¯ä»¥æèªå·±çæ°æ®æ®µï¼ä½æ²¡æèªå·±çå æ ï¼ä½¿ç¨ä¸è°ç¨å®çåºç¨ç¨åºç¸åçå æ 模å¼ï¼ä¸ä¸ª DLL å¨å åä¸åªæä¸ä¸ªå®ä¾ï¼DLL å®ç°äºä»£ç å°è£ æ§ï¼DLL çç¼å¶ä¸å ·ä½çç¼ç¨è¯è¨åç¼è¯å¨æ å ³ã å¨Win ç¯å¢ä¸ï¼æ¯ä¸ªè¿ç¨é½å¤å¶äºèªå·±ç读/åå ¨å±åéãå¦ææ³è¦ä¸å ¶å®è¿ç¨å ±äº«å åï¼å¿ 须使ç¨å åæ å°æ件æè 声æä¸ä¸ªå ±äº«æ°æ®æ®µãDLL 模åéè¦çå æ å åé½æ¯ä»è¿è¡è¿ç¨çå æ ä¸åé åºæ¥çãWindows å¨å è½½ DLL 模åæ¶å°è¿ç¨å½æ°è°ç¨ä¸ DLL æ件ç导åºå½æ°ç¸å¹é ãWindows æä½ç³»ç»å¯¹ DLL çæä½ä» ä» æ¯æ DLL æ å°å°éè¦å®çè¿ç¨çèæå°å空é´éå»ãDLL å½æ°ä¸ç代ç æå建çä»»ä½å¯¹è±¡ï¼å æ¬åéï¼é½å½è°ç¨å®ç线ç¨æè¿ç¨ææã DLLçæ°ç§è°ç¨æ¹å¼1ãéæè°ç¨æ¹å¼ï¼ç±ç¼è¯ç³»ç»å®æ对 DLL çå è½½ååºç¨ç¨åºç»ææ¶ DLL å¸è½½çç¼ç ï¼å¦è¿æå ¶å®ç¨åºä½¿ç¨è¯¥ DLLï¼å Windows 对 DLL çåºç¨è®°å½å1ï¼ç´å°ææç¸å ³ç¨åºé½ç»æ对该 DLL ç使ç¨æ¶æéæ¾å®ï¼ç®åå®ç¨ï¼ä½ä¸å¤çµæ´»ï¼åªè½æ»¡è¶³ä¸è¬è¦æ±ã éå¼çè°ç¨ï¼éè¦æ产çå¨æè¿æ¥åºæ¶äº§çç .LIB æ件å å ¥å°åºç¨ç¨åºçå·¥ç¨ä¸ï¼æ³ä½¿ç¨ DLL ä¸çå½æ°æ¶ï¼åªé¡»è¯´æä¸ä¸ãéå¼è°ç¨ä¸éè¦è°ç¨ LoadLibrary() å FreeLibrary()ãç¨åºåå¨å»ºç«ä¸ä¸ª DLL æ件æ¶ï¼é¾æ¥ç¨åºä¼èªå¨çæä¸ä¸ªä¸ä¹å¯¹åºç LIB å¯¼å ¥æ件ã该æ件å å«äºæ¯ä¸ä¸ª DLL 导åºå½æ°ç符å·ååå¯éçæ è¯å·ï¼ä½æ¯å¹¶ä¸å«æå®é ç代ç ãLIB æ件ä½ä¸º DLL çæ¿ä»£æ件被ç¼è¯å°åºç¨ç¨åºé¡¹ç®ä¸ã å½ç¨åºåéè¿éæé¾æ¥æ¹å¼ç¼è¯çæåºç¨ç¨åºæ¶ï¼åºç¨ç¨åºä¸çè°ç¨å½æ°ä¸ LIB æ件ä¸å¯¼åºç¬¦å·ç¸å¹é ï¼è¿äºç¬¦å·ææ è¯å·è¿å ¥å°çæç EXE æ件ä¸ãLIB æ件ä¸ä¹å å«äºå¯¹åºç DL Læ件åï¼ä½ä¸æ¯å®å ¨çè·¯å¾åï¼ï¼é¾æ¥ç¨åºå°å ¶åå¨å¨ EXE æ件å é¨ã å½åºç¨ç¨åºè¿è¡è¿ç¨ä¸éè¦å è½½ DLL æ件æ¶ï¼Windows æ ¹æ®è¿äºä¿¡æ¯åç°å¹¶å è½½ DLLï¼ç¶åéè¿ç¬¦å·åææ è¯å·å®ç°å¯¹ DLL å½æ°çå¨æé¾æ¥ãææ被åºç¨ç¨åºè°ç¨ç DLL æ件é½ä¼å¨åºç¨ç¨åº EXE æ件å è½½æ¶è¢«å è½½å¨å°å åä¸ãå¯æ§è¡ç¨åºé¾æ¥å°ä¸ä¸ªå å« DLL è¾åºå½æ°ä¿¡æ¯çè¾å ¥åºæ件(.LIBæ件)ãæä½ç³»ç»å¨å 载使ç¨å¯æ§è¡ç¨åºæ¶å è½½ DLLãå¯æ§è¡ç¨åºç´æ¥éè¿å½æ°åè°ç¨ DLL çè¾åºå½æ°ï¼è°ç¨æ¹æ³åç¨åºå é¨å ¶ å®çå½æ°æ¯ä¸æ ·çã 2ãå¨æè°ç¨æ¹å¼ï¼æ¯ç±ç¼ç¨è ç¨ API å½æ°å è½½åå¸è½½ DLL æ¥è¾¾å°è°ç¨ DLL çç®çï¼ä½¿ç¨ä¸è¾å¤æï¼ä½è½æ´å ææå°ä½¿ç¨å åï¼æ¯ç¼å¶å¤§ååºç¨ç¨åºæ¶çéè¦æ¹å¼ã æ¾å¼çè°ç¨ï¼ æ¯æå¨åºç¨ç¨åºä¸ç¨ LoadLibrary æ MFC æä¾ç AfxLoadLibrary æ¾å¼çå°èªå·±æåçå¨æè¿æ¥åºè°è¿æ¥ï¼å¨æè¿æ¥åºçæ件åå³æ¯ä¸é¢ä¸¤ä¸ªå½æ°çåæ°ï¼åç¨ GetProcAddress() è·åæ³è¦å¼å ¥çå½æ°ãèªæ¤ï¼ä½ å°±å¯ä»¥è±¡ä½¿ç¨å¦åæ¬åºç¨ç¨åºèªå®ä¹çå½æ°ä¸æ ·æ¥è°ç¨æ¤å¼å ¥å½æ°äºãå¨åºç¨ç¨åºéåºä¹åï¼åºè¯¥ç¨ FreeLibrary æ MFC æä¾ç AfxFreeLibrary éæ¾å¨æè¿æ¥åºãç´æ¥è°ç¨ Win ç LoadLibary å½æ°ï¼å¹¶æå® DLL çè·¯å¾ä½ä¸ºåæ°ãLoadLibary è¿å HINSTANCE åæ°ï¼åºç¨ç¨åºå¨è°ç¨ GetProcAddress å½æ°æ¶ä½¿ç¨è¿ä¸åæ°ãGetProcAddress å½æ°å°ç¬¦å·åææ è¯å·è½¬æ¢ä¸º DLL å é¨çå°åãç¨åºåå¯ä»¥å³å® DLL æ件ä½æ¶å è½½æä¸å è½½ï¼æ¾å¼é¾æ¥å¨è¿è¡æ¶å³å®å è½½åªä¸ª DLL æ件ãä½¿ç¨ DLL çç¨åºå¨ä½¿ç¨ä¹åå¿ é¡»å è½½ï¼LoadLibraryï¼å è½½DLLä»èå¾å°ä¸ä¸ªDLL模åçå¥æï¼ç¶åè°ç¨ GetProcAddress å½æ°å¾å°è¾åºå½æ°çæéï¼å¨éåºä¹åå¿ é¡»å¸è½½DLL(FreeLibrary)ã æ£å 为DLL æå ç¨å åå°ï¼å¥½ç¼è¾ççç¹ç¹æå¾å¤çµèç æ¯é½æ¯DLLæ ¼å¼æ件ãä½ä¸è½åç¬è¿è¡ã å¨æé¾æ¥åºé常é½ä¸è½ç´æ¥è¿è¡ï¼ä¹ä¸è½æ¥æ¶æ¶æ¯ãå®ä»¬æ¯ä¸äºç¬ç«çæ件ï¼å ¶ä¸å å«è½è¢«å¯æ§è¡ç¨åºæå ¶å®DLLè°ç¨æ¥å®ææ项工ä½çå½æ°ãåªæå¨å ¶å®æ¨¡åè°ç¨å¨æé¾æ¥åºä¸çå½æ°æ¶ï¼å®æåæ¥ä½ç¨ã å¨Winä¸ï¼DLLæ件æç §ç段ï¼sectionsï¼è¿è¡ç»ç»ãæ¯ä¸ªç段æå®èªå·±çå±æ§ï¼å¦å¯åææ¯åªè¯»ãå¯æ§è¡ï¼ä»£ç ï¼æè ä¸å¯æ§è¡ï¼æ°æ®ï¼ççã DLL代ç 段é常被使ç¨è¿ä¸ªDLLçè¿ç¨æå ±äº«ï¼ä¹å°±æ¯è¯´å®ä»¬å¨ç©çå åä¸å æ®ä¸ä¸ªå°æ¹ï¼å¹¶ä¸ä¸ä¼åºç°å¨é¡µé¢æ件ä¸ãå¦æ代ç 段æå æ®çç©çå å被æ¶åï¼å®çå 容就ä¼è¢«æ¾å¼ï¼åé¢å¦æéè¦çè¯å°±ç´æ¥ä»DLLæ件éæ°å è½½ã ä¸ä»£ç 段ä¸åï¼DLLçæ°æ®æ®µé常æ¯ç§æçï¼ä¹å°±æ¯è¯´ï¼æ¯ä¸ªä½¿ç¨DLLçè¿ç¨é½æèªå·±çDLLæ°æ®å¯æ¬ãä½ä¸ºéæ©ï¼æ°æ®æ®µå¯ä»¥è®¾ç½®ä¸ºå ±äº«ï¼å 许éè¿è¿ä¸ªå ±äº«å ååºåè¿è¡è¿ç¨é´éä¿¡ãä½æ¯ï¼å 为ç¨æ·æéä¸è½åºç¨å°è¿ä¸ªå ±äº«DLLå åï¼è¿å°äº§çä¸ä¸ªå®å ¨æ¼æ´ï¼ä¹å°±æ¯ä¸ä¸ªè¿ç¨è½å¤ç ´åå ±äº«æ°æ®ï¼è¿å°å¯¼è´å ¶å®çå ±äº«è¿ç¨å¼å¸¸ãä¾å¦ï¼ä¸ä¸ªä½¿ç¨è®¿å®¢è´¦å·çè¿ç¨å°å¯è½éè¿è¿ç§æ¹å¼ç ´åå ¶å®è¿è¡å¨ç¹æè´¦å·çè¿ç¨ãè¿æ¯å¨DLLä¸é¿å 使ç¨å ±äº«ç段çä¸ä¸ªéè¦åå ã å½DLL被å¦UPXè¿æ ·ä¸ä¸ªå¯æ§è¡çpackerå缩æ¶ï¼å®çææ代ç 段é½æ 记为å¯ä»¥è¯»å并ä¸æ¯éå ±äº«çãå¯ä»¥è¯»åç代ç 段ï¼ç±»ä¼¼äºç§ææ°æ®æ®µï¼æ¯æ¯ä¸ªè¿ç¨ç§æç并ä¸è¢«é¡µé¢æ件å¤ä»½ãè¿æ ·ï¼å缩DLLå°åæ¶å¢å å ååç£ç空é´æ¶èï¼æä»¥å ±äº«DLLåºå½é¿å 使ç¨å缩DLLã æ¾å°DLLæ件å°åï¼C:\WINDOWS\system\****.dllæ¶åºé(****å°±æ¯ä½ çé£ä¸ªæ¾ä¸å°çæ件å) å¼å§ï¼ï¼è¿è¡ï¼ï¼msconfigï¼ï¼å¯å¨ï¼ï¼æ¾å°åä½ è¯´ç类似çé项****ï¼ï¼åæ¶å¾ï¼ï¼ç¡®å®ï¼ç¶å 1ï¼å¼å§ï¼è¿è¡ï¼è¾å ¥ï¼regeditï¼ç¶åå车 2ï¼éæ©âæççµèâï¼ç¶åç¹å»âæ件âï¼â导åºâï¼é便起个ååç¹âä¿åâãè¿æ ·åçç®çæ¯å¤ä»½ä¸ä¸æ³¨å表ï¼ä»¥å 误æä½ååæ¶æ¢å¤ãæ¢å¤çæ¹æ³æ¯ï¼æ¾å°ä½ åæä¿åçæ件ï¼åå»å®ï¼ç¶åéæ©âå è®¸å¯¼å ¥âå³å¯ã 3ï¼éæ©âæççµèâï¼æF3é®ï¼ç¶åè¾å ¥â****âï¼ç¹å»âæ¥æ¾ä¸ä¸ä¸ªâï¼æ¾å°åä¸å®è¦æ ¸å¯¹æ¯ä¸æ¯****.dllæ件ï¼å ä¸ºä½ ç»çæ件åä¸å ¨ï¼å¦æ确认ï¼å¯¹è¯¥é¡¹ç¹âå³é®âéâå é¤âãâæ¤æ¶å¯ä»¥è¾å ¥****.dllè¿è¡æ¥æ¾ï¼ç»æåºæ¥åè¦çåé¢çæ°å¼é¨åï¼ä¸è½å çæ件å称ï¼åªè¦æ****.dllå¨çæ件ä¸ç®¡å®è¾¹ä¸è¿å没åå«çï¼å¦ï¼****.dllï¼loadï¼ï¼é½è¦å é¤ï¼â 4ï¼ç¶ååæF3é®ï¼å é¤ï¼ç´å°æ示â没ææ¾å°ç¸åºé项â为æ¢ã 5ï¼éæ°å¯å¨è®¡ç®æºï¼ççç³»ç»æ没æé®é¢ã 注ï¼å¦æåºç°äºå ¶å®ä¸¥éé®é¢ï¼è¯·æ¢å¤æ³¨å表ã