Skip to content

Conversation

@hlindset
Copy link
Owner

@hlindset hlindset commented Feb 4, 2025

Not sure if I like this better

@codecov
Copy link

codecov bot commented Feb 4, 2025

❌ 5 Tests Failed:

Tests completed Failed Passed Skipped
250 5 245 0
View the top 3 failed tests by shortest run time
Elixir.ExPgQuery.NodeTraversalTest test table alias tracking tracks location
Stack Traces | 0.0001s run time
3) test table alias tracking tracks location (ExPgQuery.NodeTraversalTest)
     test/ex_pg_query/node_traversal_test.exs:10
     ** (KeyError) key :protobuf not found in: %ExPgQuery.Parser.Result{
       tree: %PgQuery.ParseResult{
         version: 170000,
         stmts: [
           %PgQuery.RawStmt{
             stmt: %PgQuery.Node{
               node: {:select_stmt,
                %PgQuery.SelectStmt{
                  distinct_clause: [],
                  into_clause: nil,
                  target_list: [
                    %PgQuery.Node{
                      node: {:res_target,
                       %PgQuery.ResTarget{
                         name: "",
                         indirection: [],
                         val: %PgQuery.Node{
                           node: {:column_ref,
                            %PgQuery.ColumnRef{
                              fields: [
                                %PgQuery.Node{
                                  node: {:string, %PgQuery.String{sval: "users"}}
                                },
                                %PgQuery.Node{
                                  node: {:string, %PgQuery.String{sval: "id"}}
                                }
                              ],
                              location: 7
                            }}
                         },
                         location: 7
                       }}
                    }
                  ],
                  from_clause: [
                    %PgQuery.Node{
                      node: {:range_var,
                       %PgQuery.RangeVar{
                         catalogname: "",
                         schemaname: "",
                         relname: "users",
                         inh: true,
                         relpersistence: "p",
                         alias: nil,
                         location: 21
                       }}
                    }
                  ],
                  where_clause: nil,
                  group_clause: [],
                  group_distinct: false,
                  having_clause: nil,
                  window_clause: [],
                  values_lists: [],
                  sort_clause: [],
                  limit_offset: nil,
                  limit_count: nil,
                  limit_option: :LIMIT_OPTION_DEFAULT,
                  locking_clause: [],
                  with_clause: nil,
                  op: :SETOP_NONE,
                  all: false,
                  larg: nil,
                  rarg: nil
                }}
             },
             stmt_location: 0,
             stmt_len: 0
           }
         ]
       },
       nodes: [
         {%PgQuery.SelectStmt{
            distinct_clause: [],
            into_clause: nil,
            target_list: [
              %PgQuery.Node{
                node: {:res_target,
                 %PgQuery.ResTarget{
                   name: "",
                   indirection: [],
                   val: %PgQuery.Node{
                     node: {:column_ref,
                      %PgQuery.ColumnRef{
                        fields: [
                          %PgQuery.Node{
                            node: {:string, %PgQuery.String{sval: "users"}}
                          },
                          %PgQuery.Node{node: {:string, %PgQuery.String{sval: "id"}}}
                        ],
                        location: 7
                      }}
                   },
                   location: 7
                 }}
              }
            ],
            from_clause: [
              %PgQuery.Node{
                node: {:range_var,
                 %PgQuery.RangeVar{
                   catalogname: "",
                   schemaname: "",
                   relname: "users",
                   inh: true,
                   relpersistence: "p",
                   alias: nil,
                   location: 21
                 }}
              }
            ],
            where_clause: nil,
            group_clause: [],
            group_distinct: false,
            having_clause: nil,
            window_clause: [],
            values_lists: [],
            sort_clause: [],
            limit_offset: nil,
            limit_count: nil,
            limit_option: :LIMIT_OPTION_DEFAULT,
            locking_clause: [],
            with_clause: nil,
            op: :SETOP_NONE,
            all: false,
            larg: nil,
            rarg: nil
          },
          %ExPgQuery.NodeTraversal.Ctx{
            type: :select,
            location: [:stmts, 0, :stmt, :select_stmt],
            current_cte: nil,
            is_recursive_cte: false,
            subselect_item: false,
            from_clause_item: false,
            condition_item: false,
            table_aliases: %{},
            cte_names: []
          }},
         {%PgQuery.ResTarget{
            name: "",
            indirection: [],
            val: %PgQuery.Node{
              node: {:column_ref,
               %PgQuery.ColumnRef{
                 fields: [
                   %PgQuery.Node{node: {:string, %PgQuery.String{sval: "users"}}},
                   %PgQuery.Node{node: {:string, %PgQuery.String{sval: "id"}}}
                 ],
                 location: 7
               }}
            },
            location: 7
          },
          %ExPgQuery.NodeTraversal.Ctx{
            type: :select,
            location: [:stmts, 0, :stmt, :select_stmt, :target_list, 0, :res_target],
            current_cte: nil,
            is_recursive_cte: false,
            subselect_item: false,
            from_clause_item: false,
            condition_item: false,
            table_aliases: %{},
            cte_names: []
          }},
         {%PgQuery.ColumnRef{
            fields: [
              %PgQuery.Node{node: {:string, %PgQuery.String{sval: "users"}}},
              %PgQuery.Node{node: {:string, %PgQuery.String{sval: "id"}}}
            ],
            location: 7
          },
          %ExPgQuery.NodeTraversal.Ctx{
            type: :select,
            location: [:stmts, 0, :stmt, :select_stmt, :target_list, 0, :res_target,
             :val, :column_ref],
            current_cte: nil,
            is_recursive_cte: false,
            subselect_item: false,
            from_clause_item: false,
            condition_item: false,
            table_aliases: %{},
            cte_names: []
          }},
         {%PgQuery.String{sval: "users"},
          %ExPgQuery.NodeTraversal.Ctx{
            type: :select,
            location: [:stmts, 0, :stmt, :select_stmt, :target_list, 0, :res_target,
             :val, :column_ref, :fields, 0, :string],
            current_cte: nil,
            is_recursive_cte: false,
            subselect_item: false,
            from_clause_item: false,
            condition_item: false,
            table_aliases: %{},
            cte_names: []
          }},
         {%PgQuery.String{sval: "id"},
          %ExPgQuery.NodeTraversal.Ctx{
            type: :select,
            location: [:stmts, 0, :stmt, :select_stmt, :target_list, 0, :res_target,
             :val, :column_ref, :fields, 1, :string],
            current_cte: nil,
            is_recursive_cte: false,
            subselect_item: false,
            from_clause_item: false,
            condition_item: false,
            table_aliases: %{},
            cte_names: []
          }},
         {%PgQuery.RangeVar{
            catalogname: "",
            schemaname: "",
            relname: "users",
            inh: true,
            relpersistence: "p",
            alias: nil,
            location: 21
          },
          %ExPgQuery.NodeTraversal.Ctx{
            type: :select,
            location: [:stmts, 0, :stmt, :select_stmt, :from_clause, 0, :range_var],
            current_cte: nil,
            is_recursive_cte: false,
            subselect_item: false,
            from_clause_item: true,
            condition_item: false,
            table_aliases: %{},
            cte_names: []
          }}
       ],
       tables: [
         %{
           name: "users",
           type: :select,
           location: 21,
           schemaname: nil,
           relname: "users",
           inh: true,
           relpersistence: "p"
         }
       ],
       table_aliases: [],
       cte_names: [],
       functions: [],
       filter_columns: []
     }
     code: nodes = NodeTraversal.nodes(parse_result.protobuf)
     stacktrace:
       test/ex_pg_query/node_traversal_test.exs:12: (test)
Elixir.ExPgQuery.TruncatorTest doctest ExPgQuery.Truncator.truncate/3 (2)
Stack Traces | 0.0001s run time
7) doctest ExPgQuery.Truncator.truncate/3 (2) (ExPgQuery.TruncatorTest)
     test/ex_pg_query/truncator_test.exs:6
     ** (UndefinedFunctionError) function ExPgQuery.Truncator.truncate/2 is undefined or private. Did you mean:

           * truncate/3

     stacktrace:
       (ex_pg_query 0.1.0) ExPgQuery.Truncator.truncate(%PgQuery.ParseResult{version: 170000, stmts: [%PgQuery.RawStmt{stmt: %PgQuery.Node{node: {:select_stmt, %PgQuery.SelectStmt{distinct_clause: [], into_clause: nil, target_list: [%PgQuery.Node{node: {:res_target, %PgQuery.ResTarget{name: "", indirection: [], val: %PgQuery.Node{node: {:column_ref, %PgQuery.ColumnRef{fields: [%PgQuery.Node{node: {:a_star, %PgQuery.A_Star{}}}], location: 7}}}, location: 7}}}], from_clause: [%PgQuery.Node{node: {:range_var, %PgQuery.RangeVar{catalogname: "", schemaname: "", relname: "users", inh: true, relpersistence: "p", alias: nil, location: 14}}}], where_clause: %PgQuery.Node{node: {:a_expr, %PgQuery.A_Expr{kind: :AEXPR_OP, name: [%PgQuery.Node{node: {:string, %PgQuery.String{sval: "="}}}], lexpr: %PgQuery.Node{node: {:column_ref, %PgQuery.ColumnRef{fields: [%PgQuery.Node{node: {:string, %PgQuery.String{sval: "name"}}}], location: 26}}}, rexpr: %PgQuery.Node{node: {:a_const, %PgQuery.A_Const{val: {:sval, %PgQuery.String{sval: "very long name"}}, isnull: false, location: 33}}}, location: 31}}}, group_clause: [], group_distinct: false, having_clause: nil, window_clause: [], values_lists: [], sort_clause: [], limit_offset: nil, limit_count: nil, limit_option: :LIMIT_OPTION_DEFAULT, locking_clause: [], with_clause: nil, op: :SETOP_NONE, all: false, larg: nil, rarg: nil}}}, stmt_location: 0, stmt_len: 0}]}, 30)
       (for doctest at) lib/ex_pg_query/truncator.ex:94: (test)
Elixir.ExPgQuery.TruncatorTest doctest module ExPgQuery.Truncator (1)
Stack Traces | 0.0002s run time
11) doctest module ExPgQuery.Truncator (1) (ExPgQuery.TruncatorTest)
     test/ex_pg_query/truncator_test.exs:6
     ** (UndefinedFunctionError) function ExPgQuery.Truncator.truncate/2 is undefined or private. Did you mean:

           * truncate/3

     stacktrace:
       (ex_pg_query 0.1.0) ExPgQuery.Truncator.truncate(%PgQuery.ParseResult{version: 170000, stmts: [%PgQuery.RawStmt{stmt: %PgQuery.Node{node: {:select_stmt, %PgQuery.SelectStmt{distinct_clause: [], into_clause: nil, target_list: [%PgQuery.Node{node: {:res_target, %PgQuery.ResTarget{name: "", indirection: [], val: %PgQuery.Node{node: {:column_ref, %PgQuery.ColumnRef{fields: [%PgQuery.Node{node: {:string, %PgQuery.String{sval: "very"}}}], location: 7}}}, location: 7}}}, %PgQuery.Node{node: {:res_target, %PgQuery.ResTarget{name: "", indirection: [], val: %PgQuery.Node{node: {:column_ref, %PgQuery.ColumnRef{fields: [%PgQuery.Node{node: {:string, %PgQuery.String{sval: "many"}}}], location: 13}}}, location: 13}}}, %PgQuery.Node{node: {:res_target, %PgQuery.ResTarget{name: "", indirection: [], val: %PgQuery.Node{node: {:column_ref, %PgQuery.ColumnRef{fields: [%PgQuery.Node{node: {:string, %PgQuery.String{sval: "columns"}}}], location: 19}}}, location: 19}}}, %PgQuery.Node{node: {:res_target, %PgQuery.ResTarget{name: "", indirection: [], val: %PgQuery.Node{node: {:column_ref, %PgQuery.ColumnRef{fields: [%PgQuery.Node{node: {:string, %PgQuery.String{sval: "that"}}}], location: 28}}}, location: 28}}}, %PgQuery.Node{node: {:res_target, %PgQuery.ResTarget{name: "", indirection: [], val: %PgQuery.Node{node: {:column_ref, %PgQuery.ColumnRef{fields: [%PgQuery.Node{node: {:string, %PgQuery.String{sval: "make"}}}], location: 34}}}, location: 34}}}, %PgQuery.Node{node: {:res_target, %PgQuery.ResTarget{name: "", indirection: [], val: %PgQuery.Node{node: {:column_ref, %PgQuery.ColumnRef{fields: [%PgQuery.Node{node: {:string, %PgQuery.String{sval: "query"}}}], location: 40}}}, location: 40}}}, %PgQuery.Node{node: {:res_target, %PgQuery.ResTarget{name: "", indirection: [], val: %PgQuery.Node{node: {:column_ref, %PgQuery.ColumnRef{fields: [%PgQuery.Node{node: {:string, %PgQuery.String{sval: "too"}}}], location: 47}}}, location: 47}}}, %PgQuery.Node{node: {:res_target, %PgQuery.ResTarget{name: "", indirection: [], val: %PgQuery.Node{node: {:column_ref, %PgQuery.ColumnRef{fields: [%PgQuery.Node{node: {:string, %PgQuery.String{sval: "long"}}}], location: 52}}}, location: 52}}}], from_clause: [%PgQuery.Node{node: {:range_var, %PgQuery.RangeVar{catalogname: "", schemaname: "", relname: "a_table", inh: true, relpersistence: "p", alias: nil, location: 62}}}], where_clause: nil, group_clause: [], group_distinct: false, having_clause: nil, window_clause: [], values_lists: [], sort_clause: [], limit_offset: nil, limit_count: nil, limit_option: :LIMIT_OPTION_DEFAULT, locking_clause: [], with_clause: nil, op: :SETOP_NONE, all: false, larg: nil, rarg: nil}}}, stmt_location: 0, stmt_len: 0}]}, 30)
       (for doctest at) lib/ex_pg_query/truncator.ex:13: (test)

To view more test analytics, go to the Test Analytics Dashboard
📢 Thoughts on this report? Let us know!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants