Skip to main content

Settings

Struct Settings 

Source
pub struct Settings {
    pub format: Format,
    pub header: bool,
    pub separator: String,
    pub newline: String,
    pub nullvalue: String,
    pub table: String,
}
Expand description

Everything about how output is printed, which is what the dot commands change.

Fields§

§format: Format

The output mode.

§header: bool

Whether to print the column names.

§separator: String

What goes between two values in the separated modes.

§newline: String

What goes between two rows in the separated modes.

§nullvalue: String

What a null prints as in the modes that do not have a spelling of their own for it.

§table: String

The table name .mode insert puts in the statements it writes.

Implementations§

Source§

impl Settings

Source

pub fn set_format(&mut self, format: Format)

Switches mode, resetting both separators to that mode’s defaults.

Resetting is DuckDB’s behaviour and it surprises people, so it is worth saying why it is right: .mode csv means “write me a CSV”, and a pipe separator left over from an earlier .mode list would produce a file that is not one. The header setting is deliberately left alone, which is also DuckDB’s behaviour and was checked against the binary rather than guessed, because .headers off is a thing somebody says once and expects to stay said.

Source

pub fn set_format_flag(&mut self, format: Format)

Switches mode the way a command line flag does, which is not the way .mode does.

There is no rule here, only a table, and the table is upstream’s. -ascii sets both separators, -csv sets the column separator and leaves the row separator, and the other ten flags set neither. That is three behaviours across three flags on one build, which is why this is a match rather than a line of code.

It matters because these are the modes people pipe into other programs. duckdb -csv ends a row with \n and duckdb -cmd ".mode csv" ends it with \r\n, and duckdb -quote writes 'a'|'b' where duckdb -cmd ".mode quote" writes 'a','b'. A script written against the flag is a script whose next stage counts bytes or splits on a character, so copying the oversight is the whole point.

Read out of .show on duckdb v2.0.0-dev84237 for all twelve flags, once on its own and once after -separator ';' -newline '@' so that leaving a separator alone can be told apart from setting it to the same thing it already was. Per #239.

Trait Implementations§

Source§

impl Clone for Settings

Source§

fn clone(&self) -> Settings

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Settings

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Settings

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl Eq for Settings

Source§

impl PartialEq for Settings

Source§

fn eq(&self, other: &Settings) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for Settings

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.