* Directly write the message in CSV format to the syslogger file or stderr. */
| 4019 | * Directly write the message in CSV format to the syslogger file or stderr. |
| 4020 | */ |
| 4021 | static void |
| 4022 | write_syslogger_in_csv(ErrorData *edata, bool amsyslogger) |
| 4023 | { |
| 4024 | /* timestamp_with_millisecond */ |
| 4025 | syslogger_append_current_timestamp(amsyslogger); |
| 4026 | |
| 4027 | /* username */ |
| 4028 | if (MyProcPort != NULL && MyProcPort->user_name != NULL) |
| 4029 | write_syslogger_file_string(MyProcPort->user_name, amsyslogger, true); |
| 4030 | else |
| 4031 | write_syslogger_file_string(NULL, amsyslogger, true); |
| 4032 | |
| 4033 | /* databasename */ |
| 4034 | if (MyProcPort != NULL && MyProcPort->database_name != NULL) |
| 4035 | write_syslogger_file_string(MyProcPort->database_name, amsyslogger, true); |
| 4036 | else |
| 4037 | write_syslogger_file_string(NULL, amsyslogger, true); |
| 4038 | |
| 4039 | /* Process id, thread id */ |
| 4040 | syslogger_write_int32(false, "p", MyProcPid, amsyslogger, true); |
| 4041 | syslogger_write_int32(false, "th", mythread(), amsyslogger, true); |
| 4042 | |
| 4043 | /* Remote host, remote port */ |
| 4044 | if (MyProcPort != NULL && MyProcPort->remote_host != NULL) |
| 4045 | write_syslogger_file_string(MyProcPort->remote_host, amsyslogger, true); |
| 4046 | else |
| 4047 | write_syslogger_file_string(NULL, amsyslogger, true); |
| 4048 | if (MyProcPort != NULL && MyProcPort->remote_port != NULL) |
| 4049 | write_syslogger_file_string(MyProcPort->remote_port, amsyslogger, true); |
| 4050 | else |
| 4051 | write_syslogger_file_string(NULL, amsyslogger, true); |
| 4052 | |
| 4053 | /* session start timestamp */ |
| 4054 | syslogger_append_timestamp((MyProcPort != NULL ? |
| 4055 | (pg_time_t) timestamptz_to_time_t(MyStartTimestamp): 0), |
| 4056 | amsyslogger, true); |
| 4057 | |
| 4058 | /* transaction id */ |
| 4059 | syslogger_write_int32(false, "", GetTopTransactionIdIfAny(), amsyslogger, true); |
| 4060 | |
| 4061 | /* GPDB specific options */ |
| 4062 | syslogger_write_int32(true, "con", gp_session_id, amsyslogger, true); |
| 4063 | syslogger_write_int32(true, "cmd", gp_command_count, amsyslogger, true); |
| 4064 | syslogger_write_int32(false, "seg", GpIdentity.segindex, amsyslogger, true); |
| 4065 | syslogger_write_int32(true, "slice", currentSliceId, amsyslogger, true); |
| 4066 | { |
| 4067 | DistributedTransactionId dist_trans_id; |
| 4068 | TransactionId local_trans_id; |
| 4069 | TransactionId subtrans_id; |
| 4070 | |
| 4071 | GetAllTransactionXids(&dist_trans_id, |
| 4072 | &local_trans_id, |
| 4073 | &subtrans_id); |
| 4074 | |
| 4075 | syslogger_write_int32(true, "dx", dist_trans_id, amsyslogger, true); |
| 4076 | syslogger_write_int32(true, "x", local_trans_id, amsyslogger, true); |
| 4077 | syslogger_write_int32(true, "sx", subtrans_id, amsyslogger, true); |
| 4078 | } |
no test coverage detected