fn after_hook_when_false()

in src/plugin/plugin_pdo.rs [233:255]


fn after_hook_when_false(this: &mut ZObj, span: &mut Span) -> crate::Result<()> {
    let info = this.call("errorInfo", [])?;
    let info = info.as_z_arr().context("errorInfo isn't array")?;

    let state = get_error_info_item(info, 0)?.expect_z_str()?.to_str()?;
    let code = {
        let code = get_error_info_item(info, 1)?;
        // PDOStatement::fetch
        // In all cases, false is returned on failure or if there are no more rows.
        if code.get_type_info().is_null() {
            return Ok(());
        }

        &code.expect_long()?.to_string()
    };
    let error = get_error_info_item(info, 2)?.expect_z_str()?.to_str()?;

    let span_object = span.span_object_mut();
    span_object.is_error = true;
    span_object.add_log([("SQLSTATE", state), ("Error Code", code), ("Error", error)]);

    Ok(())
}