Skip to content

Ruby snippet leads to duplicated output #2998

@vanschelven

Description

@vanschelven

When formatting (partial) ruby, the output contains one bit twice.

This input (7 lines long)

        code = """        #  - format_type includes the column size constraint, e.g. varchar(50)
        #  - ::regclass is a function that gives the id for a table name
        def column_definitions(table_name) #:nodoc:
          exec_query(<<-end_sql, 'SCHEMA').rows
              SELECT a.attname, format_type(a.atttypid, a.atttypmod),
                     pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
                FROM pg_attribute a LEFT JOIN pg_attrdef d"""

Leads to this output, which is longer (10 lines)

<span class="w">        </span><span class="c1">#  - format_type includes the column size constraint, e.g. varchar(50)</span>
<span class="w">        </span><span class="c1">#  - ::regclass is a function that gives the id for a table name</span>
<span class="w">        </span><span class="k">def</span><span class="w"> </span><span class="nf">column_definitions</span><span class="p">(</span><span class="n">table_name</span><span class="p">)</span><span class="w"> </span><span class="c1">#:nodoc:</span>
<span class="w">          </span><span class="n">exec_query</span><span class="p">(</span><span class="o">&lt;&lt;-</span><span class="dl">end_sql</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;SCHEMA&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">rows</span>
<span class="err">              SELECT a.attname, format_type(a.atttypid, a.atttypmod),</span>
<span class="err">                     pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod</span>
<span class="err">                FROM pg_attribute a LEFT JOIN pg_attrdef d</span>
<span class="w">              </span><span class="no">SELECT</span><span class="w"> </span><span class="n">a</span><span class="o">.</span><span class="n">attname</span><span class="p">,</span><span class="w"> </span><span class="n">format_type</span><span class="p">(</span><span class="n">a</span><span class="o">.</span><span class="n">atttypid</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="o">.</span><span class="n">atttypmod</span><span class="p">),</span>
<span class="w">                     </span><span class="n">pg_get_expr</span><span class="p">(</span><span class="n">d</span><span class="o">.</span><span class="n">adbin</span><span class="p">,</span><span class="w"> </span><span class="n">d</span><span class="o">.</span><span class="n">adrelid</span><span class="p">),</span><span class="w"> </span><span class="n">a</span><span class="o">.</span><span class="n">attnotnull</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="o">.</span><span class="n">atttypid</span><span class="p">,</span><span class="w"> </span><span class="n">a</span><span class="o">.</span><span class="n">atttypmod</span>
<span class="w">                </span><span class="no">FROM</span><span class="w"> </span><span class="n">pg_attribute</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="no">LEFT</span><span class="w"> </span><span class="no">JOIN</span><span class="w"> </span><span class="n">pg_attrdef</span><span class="w"> </span><span class="n">d</span>

To clarify, it's the SELECT statement that is contained in the output twice.

Source of the input:

https://github.com/rails/rails/blob/0f969a989c87872935ecdd4db5ab700e35226238/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb#L919C1-L925C59

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions