mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
mysql: Support non-string query attributes
The query attributes aren't exposed to script layer right now, but this should at least parse over them once encountered and some fixups.
This commit is contained in:
parent
93f5813be3
commit
2894ae38d0
8 changed files with 412 additions and 12 deletions
|
@ -173,6 +173,85 @@ enum Client_Capabilities {
|
|||
CLIENT_QUERY_ATTRIBUTES = 0x08000000,
|
||||
};
|
||||
|
||||
# Binary Protocol Resultset encoding.
|
||||
#
|
||||
# https://dev.mysql.com/doc/dev/mysql-server/latest/page_protocol_binary_resultset.html
|
||||
#
|
||||
# Values taken from here: https://dev.mysql.com/doc/dev/mysql-server/latest/namespaceclassic__protocol_1_1field__type.html
|
||||
enum field_types {
|
||||
TYPE_DECIMAL = 0x00,
|
||||
TYPE_TINY = 0x01,
|
||||
TYPE_SHORT = 0x02,
|
||||
TYPE_LONG = 0x03,
|
||||
TYPE_FLOAT = 0x04,
|
||||
TYPE_DOUBLE = 0x05,
|
||||
TYPE_NULL = 0x06,
|
||||
TYPE_TIMESTAMP = 0x07,
|
||||
TYPE_LONGLONG = 0x08,
|
||||
TYPE_INT24 = 0x09,
|
||||
TYPE_DATE = 0x0a,
|
||||
TYPE_TIME = 0x0b,
|
||||
TYPE_DATETIME = 0x0c,
|
||||
TYPE_YEAR = 0x0d,
|
||||
TYPE_VARCHAR = 0x0f,
|
||||
TYPE_BIT = 0x10,
|
||||
TYPE_TIMESTAMP2 = 0x11,
|
||||
TYPE_JSON = 0xf5,
|
||||
TYPE_NEWDECIMAL = 0xf6,
|
||||
TYPE_ENUM = 0xf7,
|
||||
TYPE_SET = 0xf8,
|
||||
TYPE_TINYBLOB = 0xf9,
|
||||
TYPE_MEDIUMBLOB = 0xfa,
|
||||
TYPE_LONGBLOB = 0xfb,
|
||||
TYPE_BLOB = 0xfc,
|
||||
TYPE_VARSTRING = 0xfd,
|
||||
TYPE_STRING = 0xfe,
|
||||
TYPE_GEOMETRY = 0xff,
|
||||
};
|
||||
|
||||
type BinaryDate = record {
|
||||
len: uint8 &enforce(len == 0 || len == 4 || len == 7 || len == 11);
|
||||
not_implemented: bytestring &length=len;
|
||||
};
|
||||
|
||||
type BinaryTime = record {
|
||||
len: uint8 &enforce(len == 0 || len == 8 || len == 12);
|
||||
not_implemented: bytestring &length=len;
|
||||
};
|
||||
|
||||
type BinaryValue(type: uint16) = record {
|
||||
value: case ( type ) of {
|
||||
TYPE_DECIMAL -> decimal_val: LengthEncodedInteger;
|
||||
TYPE_TINY -> tiny_val: int8;
|
||||
TYPE_SHORT -> short_val: int16;
|
||||
TYPE_LONG -> long_val: int32;
|
||||
TYPE_FLOAT -> float_val: bytestring &length=4;
|
||||
TYPE_DOUBLE -> double_val: bytestring &length=8;
|
||||
TYPE_NULL -> null_val: empty; # in null_bitmap
|
||||
TYPE_TIMESTAMP -> timestamp_val: BinaryDate;
|
||||
TYPE_LONGLONG -> longlong_val: int64;
|
||||
TYPE_INT24 -> int24_val: int32;
|
||||
TYPE_DATE -> date_val: BinaryDate;
|
||||
TYPE_TIME -> time_val: BinaryTime;
|
||||
TYPE_DATETIME -> datetime_val: BinaryDate;
|
||||
TYPE_YEAR -> year_val: int16;
|
||||
TYPE_VARCHAR -> varchar_val: LengthEncodedString;
|
||||
TYPE_BIT -> bit_val: LengthEncodedString;
|
||||
TYPE_TIMESTAMP2 -> timestamp2_val: BinaryDate;
|
||||
TYPE_JSON -> json_val: LengthEncodedString;
|
||||
TYPE_NEWDECIMAL -> newdecimal_val: LengthEncodedString;
|
||||
TYPE_ENUM -> enum_val: LengthEncodedString;
|
||||
TYPE_SET -> set_val: LengthEncodedString;
|
||||
TYPE_TINYBLOB -> tinyblob_val: LengthEncodedString;
|
||||
TYPE_MEDIUMBLOB -> mediumblob_val: LengthEncodedString;
|
||||
TYPE_LONGBLOB -> longblob_val: LengthEncodedString;
|
||||
TYPE_BLOB -> blob_val: LengthEncodedString;
|
||||
TYPE_VARSTRING -> varstring_val: LengthEncodedString;
|
||||
TYPE_STRING -> string_val: LengthEncodedString;
|
||||
TYPE_GEOMETRY -> geometry_val: LengthEncodedString;
|
||||
};
|
||||
};
|
||||
|
||||
type NUL_String = RE/[^\0]*\0/;
|
||||
type EmptyOrNUL_String = RE/([^\0]*\0)?/;
|
||||
|
||||
|
@ -335,29 +414,51 @@ type Connection_Phase_Packets = case $context.connection.get_conn_expectation()
|
|||
EXPECT_AUTH_DATA -> auth_data: AuthMoreData(true);
|
||||
};
|
||||
|
||||
# Command Request
|
||||
|
||||
# Query attribute handling for COM_QUERY
|
||||
#
|
||||
type AttributeTypeAndName = record {
|
||||
type: uint16;
|
||||
type: uint8;
|
||||
unsigned_flag: uint8;
|
||||
name: LengthEncodedString;
|
||||
};
|
||||
|
||||
type Attributes(count: uint8) = record {
|
||||
unused : uint8;
|
||||
send_types_to_server: uint8; # Always 1.
|
||||
type AttributeValue(is_null: bool, type: uint8) = record {
|
||||
null: case is_null of {
|
||||
false -> val: BinaryValue(type);
|
||||
true -> null_val: empty;
|
||||
};
|
||||
} &let {
|
||||
# Move parsing the next query attribute.
|
||||
done = $context.connection.next_query_attr();
|
||||
};
|
||||
|
||||
type Attributes(count: int) = record {
|
||||
null_bitmap : bytestring &length=(count + 7) / 8;
|
||||
send_types_to_server: uint8 &enforce(send_types_to_server == 1);
|
||||
names : AttributeTypeAndName[count];
|
||||
values : LengthEncodedString[count];
|
||||
values : AttributeValue(
|
||||
# Check if null_bitmap contains this attribute index. This
|
||||
# will pass true if the attribute value is NULL and parsing
|
||||
# skipped in AttributeValue above.
|
||||
(null_bitmap[$context.connection.query_attr_idx() / 8] >> ($context.connection.query_attr_idx() % 8)) & 0x01,
|
||||
names[$context.connection.query_attr_idx()].type
|
||||
)[] &until($context.connection.query_attr_idx() >= count);
|
||||
};
|
||||
|
||||
type Query_Attributes = record {
|
||||
count : uint8;
|
||||
set_coun : uint8;
|
||||
have_attr : case ( count > 0 ) of {
|
||||
true -> attrs: Attributes(count);
|
||||
count : LengthEncodedInteger;
|
||||
set_count: LengthEncodedInteger;
|
||||
have_attr: case ( attr_count > 0 ) of {
|
||||
true -> attrs: Attributes(attr_count);
|
||||
false -> none: empty;
|
||||
};
|
||||
} &requires(new_query_attrs);
|
||||
} &let {
|
||||
attr_count: int = to_int()(count);
|
||||
new_query_attrs = $context.connection.new_query_attrs();
|
||||
};
|
||||
|
||||
# Command Request
|
||||
|
||||
type Command_Request_Packet = record {
|
||||
command: uint8;
|
||||
attrs : case ( command == COM_QUERY && $context.connection.get_client_query_attrs() && $context.connection.get_server_query_attrs() ) of {
|
||||
|
@ -554,6 +655,7 @@ refine connection MySQL_Conn += {
|
|||
bool server_query_attrs_;
|
||||
bool client_query_attrs_;
|
||||
std::string auth_plugin_;
|
||||
int query_attr_idx_;
|
||||
%}
|
||||
|
||||
%init{
|
||||
|
@ -568,6 +670,7 @@ refine connection MySQL_Conn += {
|
|||
deprecate_eof_ = false;
|
||||
server_query_attrs_ = false;
|
||||
client_query_attrs_ = false;
|
||||
query_attr_idx_ = 0;
|
||||
%}
|
||||
|
||||
function get_version(): uint8
|
||||
|
@ -825,4 +928,21 @@ refine connection MySQL_Conn += {
|
|||
++results_seen_;
|
||||
return true;
|
||||
%}
|
||||
|
||||
function query_attr_idx(): int
|
||||
%{
|
||||
return query_attr_idx_;
|
||||
%}
|
||||
|
||||
function new_query_attrs(): bool
|
||||
%{
|
||||
query_attr_idx_ = 0;
|
||||
return true;
|
||||
%}
|
||||
|
||||
function next_query_attr(): bool
|
||||
%{
|
||||
query_attr_idx_++;
|
||||
return true;
|
||||
%}
|
||||
};
|
||||
|
|
|
@ -0,0 +1,54 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
#separator \x09
|
||||
#set_separator ,
|
||||
#empty_field (empty)
|
||||
#unset_field -
|
||||
#path mysql
|
||||
#open XXXX-XX-XX-XX-XX-XX
|
||||
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p cmd arg success rows response
|
||||
#types time string addr port addr port string string bool count string
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 login root T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 query show databases T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 query show tables T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list columns_priv T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list component T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list db T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list default_roles T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list engine_cost T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list func T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list general_log T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list global_grants T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list gtid_executed T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list help_category T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list help_keyword T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list help_relation T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list help_topic T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list innodb_index_stats T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list innodb_table_stats T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list ndb_binlog_index T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list password_history T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list plugin T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list procs_priv T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list proxies_priv T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list replication_asynchronous_connection_failover T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list replication_asynchronous_connection_failover_managed T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list replication_group_configuration_version T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list replication_group_member_actions T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list role_edges T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list server_cost T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list servers T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list slave_master_info T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list slave_relay_log_info T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list slave_worker_info T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list slow_log T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list tables_priv T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list time_zone T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list time_zone_leap_second T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list time_zone_name T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list time_zone_transition T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list time_zone_transition_type T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 field_list user T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 query select @@version_comment limit 1 T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 query SELECT mysql_query_attribute_string('n1'), mysql_query_attribute_string('n2') T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33592 127.0.0.1 3306 quit (empty) - - -
|
||||
#close XXXX-XX-XX-XX-XX-XX
|
|
@ -0,0 +1,132 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
mysql handshake, root
|
||||
mysql ok, 0
|
||||
mysql request, 3, show databases
|
||||
mysql result row, [information_schema]
|
||||
mysql result row, [mysql]
|
||||
mysql result row, [performance_schema]
|
||||
mysql result row, [sys]
|
||||
mysql ok, 0
|
||||
mysql request, 3, show tables
|
||||
mysql result row, [columns_priv]
|
||||
mysql result row, [component]
|
||||
mysql result row, [db]
|
||||
mysql result row, [default_roles]
|
||||
mysql result row, [engine_cost]
|
||||
mysql result row, [func]
|
||||
mysql result row, [general_log]
|
||||
mysql result row, [global_grants]
|
||||
mysql result row, [gtid_executed]
|
||||
mysql result row, [help_category]
|
||||
mysql result row, [help_keyword]
|
||||
mysql result row, [help_relation]
|
||||
mysql result row, [help_topic]
|
||||
mysql result row, [innodb_index_stats]
|
||||
mysql result row, [innodb_table_stats]
|
||||
mysql result row, [ndb_binlog_index]
|
||||
mysql result row, [password_history]
|
||||
mysql result row, [plugin]
|
||||
mysql result row, [procs_priv]
|
||||
mysql result row, [proxies_priv]
|
||||
mysql result row, [replication_asynchronous_connection_failover]
|
||||
mysql result row, [replication_asynchronous_connection_failover_managed]
|
||||
mysql result row, [replication_group_configuration_version]
|
||||
mysql result row, [replication_group_member_actions]
|
||||
mysql result row, [role_edges]
|
||||
mysql result row, [server_cost]
|
||||
mysql result row, [servers]
|
||||
mysql result row, [slave_master_info]
|
||||
mysql result row, [slave_relay_log_info]
|
||||
mysql result row, [slave_worker_info]
|
||||
mysql result row, [slow_log]
|
||||
mysql result row, [tables_priv]
|
||||
mysql result row, [time_zone]
|
||||
mysql result row, [time_zone_leap_second]
|
||||
mysql result row, [time_zone_name]
|
||||
mysql result row, [time_zone_transition]
|
||||
mysql result row, [time_zone_transition_type]
|
||||
mysql result row, [user]
|
||||
mysql ok, 0
|
||||
mysql request, 4, columns_priv\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, component\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, db\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, default_roles\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, engine_cost\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, func\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, general_log\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, global_grants\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, gtid_executed\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, help_category\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, help_keyword\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, help_relation\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, help_topic\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, innodb_index_stats\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, innodb_table_stats\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, ndb_binlog_index\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, password_history\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, plugin\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, procs_priv\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, proxies_priv\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, replication_asynchronous_connection_failover\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, replication_asynchronous_connection_failover_managed\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, replication_group_configuration_version\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, replication_group_member_actions\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, role_edges\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, server_cost\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, servers\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, slave_master_info\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, slave_relay_log_info\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, slave_worker_info\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, slow_log\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, tables_priv\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, time_zone\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, time_zone_leap_second\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, time_zone_name\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, time_zone_transition\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, time_zone_transition_type\x00
|
||||
mysql ok, 0
|
||||
mysql request, 4, user\x00
|
||||
mysql ok, 0
|
||||
mysql request, 3, select @@version_comment limit 1
|
||||
mysql result row, [MySQL Community Server - GPL]
|
||||
mysql ok, 0
|
||||
mysql request, 3, SELECT mysql_query_attribute_string('n1'), mysql_query_attribute_string('n2')
|
||||
mysql result row, [42, v2]
|
||||
mysql ok, 0
|
||||
mysql request, 1,
|
|
@ -0,0 +1,14 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
#separator \x09
|
||||
#set_separator ,
|
||||
#empty_field (empty)
|
||||
#unset_field -
|
||||
#path mysql
|
||||
#open XXXX-XX-XX-XX-XX-XX
|
||||
#fields ts uid id.orig_h id.orig_p id.resp_h id.resp_p cmd arg success rows response
|
||||
#types time string addr port addr port string string bool count string
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33754 127.0.0.1 3306 login root T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33754 127.0.0.1 3306 ping (empty) T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33754 127.0.0.1 3306 query SELECT version() T 0 -
|
||||
XXXXXXXXXX.XXXXXX CHhAvVGS1DHFjwGM9 127.0.0.1 33754 127.0.0.1 3306 quit (empty) - - -
|
||||
#close XXXX-XX-XX-XX-XX-XX
|
|
@ -0,0 +1,10 @@
|
|||
### BTest baseline data generated by btest-diff. Do not edit. Use "btest -U/-u" to update. Requires BTest >= 0.63.
|
||||
mysql handshake, root
|
||||
mysql ok, 0
|
||||
mysql request, 14,
|
||||
mysql ok, 0
|
||||
mysql request, 3, SELECT version()
|
||||
mysql eof, T
|
||||
mysql result row, [9.0.0]
|
||||
mysql eof, F
|
||||
mysql request, 1,
|
BIN
testing/btest/Traces/mysql/many-query-attrs.pcap
Normal file
BIN
testing/btest/Traces/mysql/many-query-attrs.pcap
Normal file
Binary file not shown.
|
@ -0,0 +1,35 @@
|
|||
# @TEST-EXEC: zeek -b -C -r $TRACES/mysql/many-query-attrs.pcap %INPUT >out
|
||||
# @TEST-EXEC: btest-diff out
|
||||
# @TEST-EXEC: btest-diff mysql.log
|
||||
|
||||
@load base/protocols/mysql
|
||||
|
||||
event mysql_ok(c: connection, affected_rows: count)
|
||||
{
|
||||
print "mysql ok", affected_rows;
|
||||
}
|
||||
|
||||
event mysql_eof(c: connection, is_intermediate: bool)
|
||||
{
|
||||
print "mysql eof", is_intermediate;
|
||||
}
|
||||
|
||||
event mysql_result_row(c: connection, row: string_vec)
|
||||
{
|
||||
print "mysql result row", row;
|
||||
}
|
||||
|
||||
event mysql_error(c: connection, code: count, msg: string)
|
||||
{
|
||||
print "mysql error", code, msg;
|
||||
}
|
||||
|
||||
event mysql_command_request(c: connection, command: count, arg: string)
|
||||
{
|
||||
print "mysql request", command, arg;
|
||||
}
|
||||
|
||||
event mysql_handshake(c: connection, username: string)
|
||||
{
|
||||
print "mysql handshake", username;
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
# @TEST-EXEC: zeek -b -C -r $TRACES/mysql/mysql-9.0.0-query-attributes.pcap %INPUT >out
|
||||
# @TEST-EXEC: btest-diff out
|
||||
# @TEST-EXEC: btest-diff mysql.log
|
||||
|
||||
@load base/protocols/mysql
|
||||
|
||||
event mysql_ok(c: connection, affected_rows: count)
|
||||
{
|
||||
print "mysql ok", affected_rows;
|
||||
}
|
||||
|
||||
event mysql_eof(c: connection, is_intermediate: bool)
|
||||
{
|
||||
print "mysql eof", is_intermediate;
|
||||
}
|
||||
|
||||
event mysql_result_row(c: connection, row: string_vec)
|
||||
{
|
||||
print "mysql result row", row;
|
||||
}
|
||||
|
||||
event mysql_error(c: connection, code: count, msg: string)
|
||||
{
|
||||
print "mysql error", code, msg;
|
||||
}
|
||||
|
||||
event mysql_command_request(c: connection, command: count, arg: string)
|
||||
{
|
||||
print "mysql request", command, arg;
|
||||
}
|
||||
|
||||
event mysql_handshake(c: connection, username: string)
|
||||
{
|
||||
print "mysql handshake", username;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue