nushell/crates
Skyler Hawthorne cf923fc44c
into sqlite: Fix insertion of null values (#12328)
# Description

In #10232, the allowed input types were changed to be stricter, only
allowing records with types that can easily map onto sqlite equivalents.
Unfortunately, null was left out of the accepted input types, which
makes inserting rows with null values impossible.

This change fixes that by accepting null values as input.

One caveat of this is that when the command is creating a new table, it
uses the first row to infer an appropriate sqlite schema. If the first
row contains a null value, then it is impossible to tell which type this
column is supposed to have.

Throwing a hard error seems undesirable from a UX perspective, but
guessing can lead to a potentially useless database if we guess wrong.

So as a compromise, for null columns, we will assume the sqlite type is
TEXT and print a warning so the user knows. For the time being, if users
can't avoid a first row with null values, but also wants the right
schema, they are advised to create their table before running `into
sqlite`.

A future PR can add the ability to explicitly specify a schema.

Fixes #12225

# Tests + Formatting

* Tests added to cover expected behavior around insertion of null values
2024-03-29 06:41:16 -05:00
..
nu_plugin_custom_values Rename Value::CustomValue to Value::Custom (#12309) 2024-03-27 22:10:56 +01:00
nu_plugin_example Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
nu_plugin_formats Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
nu_plugin_gstat Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
nu_plugin_inc Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
nu_plugin_python Improve the error message for a plugin version mismatch (#12122) 2024-03-08 06:04:22 -06:00
nu_plugin_query Change PluginCommand API to be more like Command (#12279) 2024-03-27 11:59:57 +01:00
nu-cli add a few more logging statements for debugging startup (#12316) 2024-03-28 11:27:12 -05:00
nu-cmd-base Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
nu-cmd-dataframe keep sqlparser at 39 until polars is upgraded (#12311) 2024-03-27 19:26:49 -05:00
nu-cmd-extra Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
nu-cmd-lang Rename Value::CustomValue to Value::Custom (#12309) 2024-03-27 22:10:56 +01:00
nu-color-config Rename Value::CustomValue to Value::Custom (#12309) 2024-03-27 22:10:56 +01:00
nu-command into sqlite: Fix insertion of null values (#12328) 2024-03-29 06:41:16 -05:00
nu-engine Exposed the recursion limit value as a config option (#12308) 2024-03-28 15:40:45 -05:00
nu-explore Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
nu-glob Fix ignored clippy lints (#12160) 2024-03-11 19:46:04 +01:00
nu-json Move more dependencies to workspace level (#12270) 2024-03-23 18:46:02 -05:00
nu-lsp Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
nu-parser Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
nu-path ls, rm, cp, open, touch, mkdir: Don't expand tilde if input path is quoted string or a variable. (#12232) 2024-03-25 10:08:38 +08:00
nu-plugin Rename Value::CustomValue to Value::Custom (#12309) 2024-03-27 22:10:56 +01:00
nu-plugin-test-support Rename Value::CustomValue to Value::Custom (#12309) 2024-03-27 22:10:56 +01:00
nu-pretty-hex nu-explore/ Use hex-dump for binary data (#12184) 2024-03-21 19:02:03 -05:00
nu-protocol Fix build of nu-protocol without plugin feature enabled (#12323) 2024-03-28 22:39:57 +01:00
nu-std add a few more logging statements for debugging startup (#12316) 2024-03-28 11:27:12 -05:00
nu-system Deduplicate nix dependency versions (#12307) 2024-03-27 16:43:37 +01:00
nu-table Add command_prelude module (#12291) 2024-03-26 21:17:30 +00:00
nu-term-grid Move more dependencies to workspace level (#12270) 2024-03-23 18:46:02 -05:00
nu-test-support Move more dependencies to workspace level (#12270) 2024-03-23 18:46:02 -05:00
nu-utils Exposed the recursion limit value as a config option (#12308) 2024-03-28 15:40:45 -05:00
README.md Remove old nushell/merge engine-q 2022-02-07 14:54:06 -05:00

Nushell core libraries and plugins

These sub-crates form both the foundation for Nu and a set of plugins which extend Nu with additional functionality.

Foundational libraries are split into two kinds of crates:

  • Core crates - those crates that work together to build the Nushell language engine
  • Support crates - a set of crates that support the engine with additional features like JSON support, ANSI support, and more.

Plugins are likewise also split into two types:

  • Core plugins - plugins that provide part of the default experience of Nu, including access to the system properties, processes, and web-connectivity features.
  • Extra plugins - these plugins run a wide range of different capabilities like working with different file types, charting, viewing binary data, and more.