Skip to content

ARROW-10233: [Rust] Make array_value_to_string available in all Arrow builds - #8397

Closed
alamb wants to merge 2 commits into
apache:masterfrom
alamb:alamb/consolidate-array-value-to-string
Closed

ARROW-10233: [Rust] Make array_value_to_string available in all Arrow builds#8397
alamb wants to merge 2 commits into
apache:masterfrom
alamb:alamb/consolidate-array-value-to-string

Conversation

@alamb

@alambalamb commented Oct 8, 2020

Copy link
Copy Markdown
Contributor

This PR makes array_value_to_string available to all arrow builds. Currently it is only available if the feature = "prettyprint" is enabled which is not the default. The full print_batches and pretty_format_batches (and the libraries they depend on) are still only available of the feature flag is set.

The rationale for making this change is that I want to be able to use array_value_to_string to write tests (such as on #8346) but currently it is only available when feature = "prettyprint" is enabled.

It appears that @nevi-me made prettyprint compilation optional so that arrow could be compiled for wasm in #7400. https://issues.apache.org/jira/browse/ARROW-9088 explains that this is due to some dependency of pretty-table; array_value_to_string has no needed dependencies.

Note I tried to compile ARROW again using the wasm32-unknown-unknown target on master and it fails (perhaps due to a new dependency that was added?):

Click to expand!
alamb@ip-192-168-0-182 rust % git log | head -n 1
git log | head -n 1
commit d4cbc4b7aab5d37262b83e972af4bd7cb44c7a5c
alamb@ip-192-168-0-182 rust % git status
git status
On branch master
Your branch is up to date with 'upstream/master'.
nothing to commit, working tree clean
alamb@ip-192-168-0-182 rust % alamb@ip-192-168-0-182 rust % cargo build --target=wasm32-unknown-unknown
cargo build --target=wasm32-unknown-unknown
Compiling cfg-if v0.1.10
Compiling lazy_static v1.4.0
Compiling futures-core v0.3.5
Compiling slab v0.4.2
Compiling futures-sink v0.3.5
Compiling once_cell v1.4.0
Compiling pin-utils v0.1.0
Compiling futures-io v0.3.5
Compiling itoa v0.4.5
Compiling bytes v0.5.4
Compiling fnv v1.0.7
Compiling iovec v0.1.4
Compiling unicode-width v0.1.7
Compiling pin-project-lite v0.1.7
Compiling ppv-lite86 v0.2.8
Compiling atty v0.2.14
Compiling dirs v1.0.5
Compiling smallvec v1.4.0
Compiling regex-syntax v0.6.18
Compiling encode_unicode v0.3.6
Compiling hex v0.4.2
Compiling tower-service v0.3.0
error[E0433]: failed to resolve: could not find `unix` in `os`
--> /Users/alamb/.cargo/registry/src/github.com-1ecc6299db9ec823/dirs-1.0.5/src/lin.rs:41:18
|
41 | use std::os::unix::ffi::OsStringExt;
| ^^^^ could not find `unix` in `os`
error[E0432]: unresolved import `unix`
--> /Users/alamb/.cargo/registry/src/github.com-1ecc6299db9ec823/dirs-1.0.5/src/lin.rs:6:5
|
6 | use unix;
| ^^^^ no `unix` in the root
Compiling alloc-no-stdlib v2.0.1
Compiling adler32 v1.0.4
error[E0599]: no function or associated item named `from_vec` found for struct `std::ffi::OsString` in the current scope
--> /Users/alamb/.cargo/registry/src/github.com-1ecc6299db9ec823/dirs-1.0.5/src/lin.rs:48:34
|
48 | Some(PathBuf::from(OsString::from_vec(out)))
| ^^^^^^^^ function or associated item not found in `std::ffi::OsString`
|
= help: items from traits can only be used if the trait is in scope
= note: the following trait is implemented but not in scope; perhaps add a `use` for it:
`use std::sys_common::os_str_bytes::OsStringExt;`
error: aborting due to 3 previous errors
Some errors have detailed explanations: E0432, E0433, E0599.
For more information about an error, try `rustc --explain E0432`.
error: could not compile `dirs`.
To learn more, run the command again with --verbose.
warning: build failed, waiting for other jobs to finish...
error: build failed
alamb@ip-192-168-0-182 rust % ```
</details>

@github-actions

Copy link
Copy Markdown

@nevi-menevi-me left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The main reason why we put pretty-printing behind a feature was because it brought more dependencies with it. I'm happy with this change as it doesn't add any dependencies for the display feature.

Comment threadrust/arrow/src/util/display.rs Outdated

@jorgecarleitaojorgecarleitao left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thanks a lot!

@alamb
alamb deleted the alamb/consolidate-array-value-to-string branch October 26, 2020 20:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants

@alamb@nevi-me@jorgecarleitao