(&self, parse_error: &ParserStatementError)
| 643 | } |
| 644 | |
| 645 | fn track_statement_parse_failure(&self, parse_error: &ParserStatementError) { |
| 646 | let session = self.session.as_ref().expect("session invariant violated"); |
| 647 | let Some(user_id) = session.user().external_metadata.as_ref().map(|m| m.user_id) else { |
| 648 | return; |
| 649 | }; |
| 650 | let Some(segment_client) = &self.segment_client else { |
| 651 | return; |
| 652 | }; |
| 653 | let Some(statement_kind) = parse_error.statement else { |
| 654 | return; |
| 655 | }; |
| 656 | let Some((action, object_type)) = telemetry::analyze_audited_statement(statement_kind) |
| 657 | else { |
| 658 | return; |
| 659 | }; |
| 660 | let event_type = StatementFailureType::ParseFailure; |
| 661 | let event_name = format!( |
| 662 | "{} {} {}", |
| 663 | object_type.as_title_case(), |
| 664 | action.as_title_case(), |
| 665 | event_type.as_title_case(), |
| 666 | ); |
| 667 | segment_client.environment_track( |
| 668 | &self.environment_id, |
| 669 | event_name, |
| 670 | json!({ |
| 671 | "statement_kind": statement_kind, |
| 672 | "error": &parse_error.error, |
| 673 | }), |
| 674 | EventDetails { |
| 675 | user_id: Some(user_id), |
| 676 | application_name: Some(session.application_name()), |
| 677 | ..Default::default() |
| 678 | }, |
| 679 | ); |
| 680 | } |
| 681 | |
| 682 | // Verify and return the named prepared statement. We need to verify each use |
| 683 | // to make sure the prepared statement is still safe to use. |
no test coverage detected