From c1e915584313ca1875bcceabc5f29fac06a9ab24 Mon Sep 17 00:00:00 2001 From: AntiTopQuark Date: Thu, 18 Jan 2024 11:12:45 +0000 Subject: [PATCH] SQL Audit adds network_wait_time column placeholder --- .../virtual_table/ob_gv_sql_audit.cpp | 6 +++- src/observer/virtual_table/ob_gv_sql_audit.h | 1 + .../ob_inner_table_schema.11001_11050.cpp | 34 ++++++++++++++++++- .../ob_inner_table_schema.15001_15050.cpp | 34 ++++++++++++++++++- .../inner_table/ob_inner_table_schema_def.py | 3 +- .../mysql/desc_virtual_table_in_mysql.result | 1 + .../r/mysql/desc_virtual_table_in_sys.result | 1 + 7 files changed, 76 insertions(+), 4 deletions(-) diff --git a/src/observer/virtual_table/ob_gv_sql_audit.cpp b/src/observer/virtual_table/ob_gv_sql_audit.cpp index c537ee9c27..8751cbe6c7 100644 --- a/src/observer/virtual_table/ob_gv_sql_audit.cpp +++ b/src/observer/virtual_table/ob_gv_sql_audit.cpp @@ -545,7 +545,8 @@ bool ObGvSqlAudit::is_perf_event_dep_field(uint64_t col_id) { case INDEX_BLOCK_CACHE_HIT: case BLOCKSCAN_BLOCK_CNT: case BLOCKSCAN_ROW_CNT: - case PUSHDOWN_STORAGE_FILTER_ROW_CNT: { + case PUSHDOWN_STORAGE_FILTER_ROW_CNT: + case NETWORK_WAIT_TIME: { is_contain = true; break; } @@ -1052,6 +1053,9 @@ int ObGvSqlAudit::fill_cells(obmysql::ObMySQLRequestRecord &record) case PLSQL_EXEC_TIME: { cells[cell_idx].set_null(); } break; + case NETWORK_WAIT_TIME: { + cells[cell_idx].set_null(); + } break; default: { ret = OB_ERR_UNEXPECTED; SERVER_LOG(WARN, "invalid column id", K(ret), K(cell_idx), K(col_id)); diff --git a/src/observer/virtual_table/ob_gv_sql_audit.h b/src/observer/virtual_table/ob_gv_sql_audit.h index b921b5716c..5da05c8d2e 100644 --- a/src/observer/virtual_table/ob_gv_sql_audit.h +++ b/src/observer/virtual_table/ob_gv_sql_audit.h @@ -170,6 +170,7 @@ private: PL_TRACE_ID, PLSQL_EXEC_TIME, + NETWORK_WAIT_TIME, }; const static int64_t PRI_KEY_IP_IDX = 0; diff --git a/src/share/inner_table/ob_inner_table_schema.11001_11050.cpp b/src/share/inner_table/ob_inner_table_schema.11001_11050.cpp index 2ba58a4bd0..f5fabccb22 100644 --- a/src/share/inner_table/ob_inner_table_schema.11001_11050.cpp +++ b/src/share/inner_table/ob_inner_table_schema.11001_11050.cpp @@ -11104,6 +11104,21 @@ int ObInnerTableSchema::all_virtual_sql_audit_schema(ObTableSchema &table_schema false, //is_nullable false); //is_autoincrement } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("network_wait_time", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObUInt64Type, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(uint64_t), //column_length + -1, //column_precision + -1, //column_scale + true, //is_nullable + false); //is_autoincrement + } if (OB_SUCC(ret)) { table_schema.get_part_option().set_part_num(1); table_schema.set_part_level(PARTITION_LEVEL_ONE); @@ -12870,7 +12885,24 @@ int ObInnerTableSchema::all_virtual_sql_audit_all_virtual_sql_audit_i1_schema(Ob true);//is_storing_column } - table_schema.set_max_used_column_id(column_id + 100); + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_WITH_COLUMN_FLAGS("network_wait_time", //column_name + column_id + 101, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObUInt64Type, //column_type + CS_TYPE_INVALID, //column_collation_type + sizeof(uint64_t), //column_length + -1, //column_precision + -1, //column_scale + true,//is_nullable + false,//is_autoincrement + false,//is_hidden + true);//is_storing_column + } + + table_schema.set_max_used_column_id(column_id + 101); return ret; } diff --git a/src/share/inner_table/ob_inner_table_schema.15001_15050.cpp b/src/share/inner_table/ob_inner_table_schema.15001_15050.cpp index bb7f63acdf..eb32db3a6d 100644 --- a/src/share/inner_table/ob_inner_table_schema.15001_15050.cpp +++ b/src/share/inner_table/ob_inner_table_schema.15001_15050.cpp @@ -1558,6 +1558,21 @@ int ObInnerTableSchema::all_virtual_sql_audit_ora_schema(ObTableSchema &table_sc false, //is_nullable false); //is_autoincrement } + + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA("NETWORK_WAIT_TIME", //column_name + ++column_id, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObNumberType, //column_type + CS_TYPE_INVALID, //column_collation_type + 38, //column_length + 38, //column_precision + 0, //column_scale + true, //is_nullable + false); //is_autoincrement + } if (OB_SUCC(ret)) { table_schema.get_part_option().set_part_num(1); table_schema.set_part_level(PARTITION_LEVEL_ONE); @@ -3324,7 +3339,24 @@ int ObInnerTableSchema::all_virtual_sql_audit_ora_all_virtual_sql_audit_i1_schem true);//is_storing_column } - table_schema.set_max_used_column_id(column_id + 100); + if (OB_SUCC(ret)) { + ADD_COLUMN_SCHEMA_WITH_COLUMN_FLAGS("NETWORK_WAIT_TIME", //column_name + column_id + 101, //column_id + 0, //rowkey_id + 0, //index_id + 0, //part_key_pos + ObNumberType, //column_type + CS_TYPE_INVALID, //column_collation_type + 38, //column_length + 38, //column_precision + 0, //column_scale + true,//is_nullable + false,//is_autoincrement + false,//is_hidden + true);//is_storing_column + } + + table_schema.set_max_used_column_id(column_id + 101); return ret; } diff --git a/src/share/inner_table/ob_inner_table_schema_def.py b/src/share/inner_table/ob_inner_table_schema_def.py index 3bab7865e6..78f83cab86 100644 --- a/src/share/inner_table/ob_inner_table_schema_def.py +++ b/src/share/inner_table/ob_inner_table_schema_def.py @@ -8160,7 +8160,8 @@ def_table_schema( ('tx_internal_route_version', 'uint'), ('flt_trace_id', 'varchar:OB_MAX_SPAN_LENGTH'), ('pl_trace_id', 'varchar:OB_MAX_HOST_NAME_LENGTH', 'true'), - ('plsql_exec_time', 'int') + ('plsql_exec_time', 'int'), + ('network_wait_time', 'uint', 'true'), ], partition_columns = ['svr_ip', 'svr_port'], vtable_route_policy = 'distributed', diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result index 19f7b69791..06c1a03235 100644 --- a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_mysql.result @@ -782,6 +782,7 @@ tx_internal_route_version bigint(20) unsigned NO NULL flt_trace_id varchar(1024) NO NULL pl_trace_id varchar(128) YES NULL plsql_exec_time bigint(20) NO NULL +network_wait_time bigint(20) unsigned YES NULL select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from oceanbase.__all_virtual_sql_audit; IF(count(*) >= 0, 1, 0) 1 diff --git a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result index 66687f4892..c6f06ef48d 100644 --- a/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result +++ b/tools/deploy/mysql_test/test_suite/inner_table/r/mysql/desc_virtual_table_in_sys.result @@ -855,6 +855,7 @@ tx_internal_route_version bigint(20) unsigned NO NULL flt_trace_id varchar(1024) NO NULL pl_trace_id varchar(128) YES NULL plsql_exec_time bigint(20) NO NULL +network_wait_time bigint(20) unsigned YES NULL select /*+QUERY_TIMEOUT(60000000)*/ IF(count(*) >= 0, 1, 0) from oceanbase.__all_virtual_sql_audit; IF(count(*) >= 0, 1, 0) 1