cloudspannerecosystem / spanner-dump

Command line tool for exporting a Cloud Spanner database in text format
Apache License 2.0
39 stars 13 forks source link

Add new data types: NUMERIC and JSON #16

Closed yfuruyama closed 3 years ago

yfuruyama commented 3 years ago

This PR adds supporting new data types: NUMERIC and JSON.

Example:

$ spanner-dump -p ${PROJECT} -i ${INSTANCE} -d ${DATABASE}
CREATE TABLE NumericTest (
  Id INT64 NOT NULL,
  N01 NUMERIC NOT NULL,
  N02 NUMERIC,
  N03 ARRAY<NUMERIC> NOT NULL,
  N04 ARRAY<NUMERIC>,
) PRIMARY KEY(Id);
CREATE TABLE JSONTest (
  id INT64 NOT NULL,
  j1 JSON NOT NULL,
  j2 JSON,
  j3 ARRAY<JSON> NOT NULL,
  j4 ARRAY<JSON>,
) PRIMARY KEY(id);
INSERT INTO `NumericTest` (`Id`, `N01`, `N02`, `N03`, `N04`) VALUES (1, NUMERIC "0.100000000", NULL, [NUMERIC "0.100000000", NUMERIC "0.200000000", NUMERIC "0.300000000"], NULL), (2, NUMERIC "0.200000000", NUMERIC "0.300000000", [NUMERIC "0.100000000", NULL, NUMERIC "0.300000000"], [NUMERIC "0.100000000"]);
INSERT INTO `JSONTest` (`id`, `j1`, `j2`, `j3`, `j4`) VALUES (1, JSON "{\"a\":\"b\"}", NULL, [JSON "[1,2,3]", JSON "{\"foo\":null}"], NULL), (2, JSON "{\"a\":\"b\",\"b\":\"a\"}", NULL, [JSON "[1,2,3]", JSON "{\"foo\":null}"], NULL);
yfuruyama commented 3 years ago

Thanks @skuruppu for reviewing this!