You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@arrow.apache.org by ko...@apache.org on 2022/12/27 07:03:01 UTC

[arrow] branch master updated: GH-15085: [Ruby] Add ColumnContainable#column_names (#15089)

This is an automated email from the ASF dual-hosted git repository.

kou pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/arrow.git


The following commit(s) were added to refs/heads/master by this push:
     new 9ac4259417 GH-15085: [Ruby] Add ColumnContainable#column_names (#15089)
9ac4259417 is described below

commit 9ac425941722c07b61331cea1ea0170a936de8be
Author: Hirokazu SUZUKI <he...@gmail.com>
AuthorDate: Tue Dec 27 16:02:54 2022 +0900

    GH-15085: [Ruby] Add ColumnContainable#column_names (#15089)
    
    ### What I did
    
    * Add `ColumnContainable#column_names`.
      * Returns `columns.collect(&:name)`.
    * Add tests for the tables that have unique keys and same keys.
    * Add document.
    
    ### What I didn't
    
    * Check whole code to be replaced for it.
    
    ### What I checked
    
    * It works as a method Table#keys in RedAmber using refinements.
    
    ### Notes for reviewers
    
    * I will search the code which should be replaced if reviewer requested me.
    
    ### Related Issue
    
    * Closes: #15085
    
    Lead-authored-by: Hirokazu SUZUKI (heronshoes) <he...@gmail.com>
    Co-authored-by: Sutou Kouhei <ko...@cozmixng.org>
    Signed-off-by: Sutou Kouhei <ko...@clear-code.com>
---
 ruby/red-arrow/lib/arrow/column-containable.rb |  9 +++++++++
 ruby/red-arrow/test/test-table.rb              | 12 ++++++++++++
 2 files changed, 21 insertions(+)

diff --git a/ruby/red-arrow/lib/arrow/column-containable.rb b/ruby/red-arrow/lib/arrow/column-containable.rb
index 7d7de66bda..002dcdb5b0 100644
--- a/ruby/red-arrow/lib/arrow/column-containable.rb
+++ b/ruby/red-arrow/lib/arrow/column-containable.rb
@@ -143,5 +143,14 @@ module Arrow
         find_column(selector)
       end
     end
+
+    # Return column names in this object.
+    #
+    # @return [::Array<String>] column names.
+    # 
+    # @since 11.0.0
+    def column_names
+      @column_names ||= columns.collect(&:name)
+    end
   end
 end
diff --git a/ruby/red-arrow/test/test-table.rb b/ruby/red-arrow/test/test-table.rb
index 8e1ba74df0..a5ca6a821e 100644
--- a/ruby/red-arrow/test/test-table.rb
+++ b/ruby/red-arrow/test/test-table.rb
@@ -602,6 +602,18 @@ class TableTest < Test::Unit::TestCase
     end
   end
 
+  sub_test_case("#column_names") do
+    test("unique") do
+      table = Arrow::Table.new(a: [1], b: [2], c: [3])
+      assert_equal(%w[a b c], table.column_names)
+    end
+
+    test("duplicated") do
+      table = Arrow::Table.new([["a", [1, 2, 3]], ["a", [4, 5, 6]]])
+      assert_equal(%w[a a], table.column_names)
+    end
+  end
+
   sub_test_case("#save and .load") do
     module SaveLoadFormatTests
       def test_default