Packages
new_relic_agent
1.21.2
1.40.3
1.40.2
1.40.1
1.40.0
1.39.0
1.38.0
1.37.0
1.36.0
1.35.0
1.34.0
1.33.0
1.32.0
1.31.1
1.31.0
1.30.0
1.29.0
1.28.0
1.27.8
1.27.7
1.27.6
1.27.5
1.27.4
1.27.3
1.27.2
1.27.1
1.27.0
1.26.0
1.25.3
1.25.2
1.25.1
1.25.0
1.24.5
1.24.4
1.24.3
1.24.2
1.24.1
1.24.0
1.24.0-rc.10
1.24.0-rc.9
1.24.0-rc.8
1.24.0-rc.7
1.23.6
1.23.5
1.23.4
1.23.3
1.23.2
1.23.1
1.23.0
1.23.0-rc.6
1.23.0-rc.5
1.23.0-rc.4
1.23.0-rc.3
1.23.0-rc.2
1.23.0-rc.1
1.22.6
1.22.5
1.22.4
1.22.3
1.22.2
1.22.1
1.22.0
1.21.2
1.21.1
1.21.0
1.21.0-rc.3
1.21.0-rc.1
1.20.0
1.20.0-rc.1
1.19.7
1.19.6
1.19.5
1.19.4
1.19.3
1.19.2
1.19.1
1.19.0
1.18.5
1.18.4
1.18.3
1.18.2
1.18.1
1.18.0
1.18.0-rc.5
1.18.0-rc.4
1.18.0-rc.2
1.18.0-rc.1
1.17.1
1.17.0
1.17.0-rc.4
1.17.0-rc.3
1.17.0-rc.2
1.17.0-rc.1
1.17.0-rc.0
1.16.7
1.16.6
1.16.5
1.16.4
1.16.3
1.16.2
1.16.1
1.16.0
1.16.0-rc.2
1.16.0-rc.1
1.16.0-rc.0
1.15.0
1.15.0-rc.3
1.15.0-rc.2
1.15.0-rc.1
1.14.0
1.13.1
1.13.0
1.12.0
1.11.0
1.10.2
1.10.1
1.10.0
1.9.12
1.9.11
1.9.10
1.9.9
1.9.8
1.9.7
1.9.6
1.9.5
1.9.4
1.9.3
1.9.2
1.9.1
1.9.0
1.8.0
1.7.0
1.6.2
1.6.1
1.6.0
1.5.0
1.4.0
1.3.2
1.3.1
1.3.0
1.2.1
1.2.0
1.1.0
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
New Relic's Open-Source Elixir Agent
Current section
Files
Jump to
Current section
Files
lib/new_relic/telemetry/ecto/metadata.ex
defmodule NewRelic.Telemetry.Ecto.Metadata do
@moduledoc false
@postgrex_select ~r/FROM "(?<table>\w+)"/
@postgrex_insert ~r/INSERT INTO "(?<table>\w+)"/
@postgrex_update ~r/UPDATE "(?<table>\w+)"/
@postgrex_delete ~r/FROM "(?<table>\w+)"/
@postgrex_create_table ~r/CREATE TABLE( IF NOT EXISTS)? "(?<table>\w+)"/
def parse(%{
query: query,
result: {_ok_or_error, %{__struct__: struct}}
})
when struct in [Postgrex.Result, Postgrex.Error] do
{operation, table} =
case query do
"SELECT" <> _ -> {"select", capture(@postgrex_select, query, "table")}
"INSERT" <> _ -> {"insert", capture(@postgrex_insert, query, "table")}
"UPDATE" <> _ -> {"update", capture(@postgrex_update, query, "table")}
"DELETE" <> _ -> {"delete", capture(@postgrex_delete, query, "table")}
"CREATE TABLE" <> _ -> {"create", capture(@postgrex_create_table, query, "table")}
"begin" -> {"begin", "other"}
"commit" -> {"commit", "other"}
"rollback" -> {"rollback", "other"}
_ -> {"other", "other"}
end
{"Postgres", table, operation}
end
@myxql_select ~r/FROM `(?<table>\w+)`/
@myxql_insert ~r/INSERT INTO `(?<table>\w+)`/
@myxql_update ~r/UPDATE `(?<table>\w+)`/
@myxql_delete ~r/FROM `(?<table>\w+)`/
@myxql_create_table ~r/CREATE TABLE( IF NOT EXISTS)? `(?<table>\w+)`/
def parse(%{
query: query,
result: {_ok_or_error, %{__struct__: struct}}
})
when struct in [MyXQL.Result, MyXQL.Error] do
{operation, table} =
case query do
"SELECT" <> _ -> {"select", capture(@myxql_select, query, "table")}
"INSERT" <> _ -> {"insert", capture(@myxql_insert, query, "table")}
"UPDATE" <> _ -> {"update", capture(@myxql_update, query, "table")}
"DELETE" <> _ -> {"delete", capture(@myxql_delete, query, "table")}
"CREATE TABLE" <> _ -> {"create", capture(@myxql_create_table, query, "table")}
"begin" -> {"begin", "other"}
"commit" -> {"commit", "other"}
"rollback" -> {"rollback", "other"}
_ -> {"other", "other"}
end
{"MySQL", table, operation}
end
def parse(%{result: {:ok, %{__struct__: Postgrex.Cursor}}}), do: :ignore
def parse(%{result: {:ok, %{__struct__: MyXQL.Cursor}}}), do: :ignore
def parse(%{result: {:ok, nil}}), do: :ignore
def parse(%{result: {:error, _}}), do: :ignore
def capture(regex, query, match) do
Regex.named_captures(regex, query)[match]
end
end