MeridianMERIDIAN

container

Structured data — JSON, CSV, query strings, key-value pairs

3 categories, 12 types: 10 a sibling in its category also accepts, 12 accepted by another category's rule, 1 that decompose into parts.

3 categories · 12 types

The 3 container categories

Each category's lookup value, against every other category's rule

CategoryTypesCasts toFor exampleWithin the groupAlso accepted by
7VARCHAR, JSON<p>Hello world</p>6 a sibling accepts, 1 misreadarray
4VARCHARapple,banana,cherry4 a sibling also acceptsobject
1VARCHARname=John&age=30&city=NewYor…—array, object

Where container categories overlap

Each type's lookup value, against every other category's rule

Which container type is it?

7 of 12 container types in 2 categories accept it, and read it 2 ways.

TypeCategoryReads it as
HTML Content htmlobjectHello world
Comma-Separated Values (Simple) comma_separatedarray<p>Hello world</p>
Pipe-Separated Values pipe_separatedarray<p>Hello world</p>
Semicolon-Separated Values semicolon_separatedarray<p>Hello world</p>
Whitespace-Separated Values whitespace_separatedarray<p>Hello world</p>
CSV Record csvobject<p>Hello world</p>
XML Document xmlobject<p>Hello world</p>

What the engine extracts

  • object1 of 7tag_count · text_content

Use it

One value from each category, each inferred on its own

CLI · DuckDB
$ for v in '<p>Hello world</p>' 'apple,banana,cherry' 'name=John&age=30&city=NewYork'; do finetype infer -i "$v"; done

SELECT v, ft_infer(v) FROM (VALUES ('<p>Hello world</p>'), ('apple,banana,cherry'), ('name=John&age=30&city=NewYork')) t(v);

Type Registry