diff --git a/d2compiler/compile.go b/d2compiler/compile.go
index 2e4d75c3b..51014adc0 100644
--- a/d2compiler/compile.go
+++ b/d2compiler/compile.go
@@ -666,7 +666,7 @@ func (c *compiler) compileSQLTable(obj *d2graph.Object) {
obj.SQLTable = &d2target.SQLTable{}
parentID := obj.Parent.AbsID()
- tableID := obj.AbsID()
+ prefixTableID := obj.AbsID() + "."
for _, col := range obj.ChildrenArray {
if col.IDVal == "style" {
continue
@@ -702,7 +702,7 @@ func (c *compiler) compileSQLTable(obj *d2graph.Object) {
srcID := e.Src.AbsID()
dstID := e.Dst.AbsID()
// skip edges between columns of the same table
- if strings.HasPrefix(srcID, tableID) && strings.HasPrefix(dstID, tableID) {
+ if strings.HasPrefix(srcID, prefixTableID) && strings.HasPrefix(dstID, prefixTableID) {
continue
}
if srcID == absID {
diff --git a/d2compiler/compile_test.go b/d2compiler/compile_test.go
index 52a2e3149..ddb51cf8c 100644
--- a/d2compiler/compile_test.go
+++ b/d2compiler/compile_test.go
@@ -1843,6 +1843,31 @@ choo: {
expErr: `d2/testdata/d2compiler/TestCompile/sql-panic.d2:3:27: constraint value must be a string
`,
},
+ {
+ name: "wrong_column_index",
+ text: `Chinchillas: {
+ shape: sql_table
+ id: int {constraint: primary_key}
+ whisker_len: int
+ fur_color: string
+ age: int
+ server: int {constraint: foreign_key}
+ caretaker: int {constraint: foreign_key}
+}
+
+Chinchillas_Collectibles: {
+ shape: sql_table
+ id: int
+ collectible: id {constraint: foreign_key}
+ chinchilla: id {constraint: foreign_key}
+}
+
+Chinchillas_Collectibles.chinchilla -> Chinchillas.id`,
+ assertions: func(t *testing.T, g *d2graph.Graph) {
+ tassert.Equal(t, 0, *g.Edges[0].DstTableColumnIndex)
+ tassert.Equal(t, 2, *g.Edges[0].SrcTableColumnIndex)
+ },
+ },
}
for _, tc := range testCases {
diff --git a/e2etests/regression_test.go b/e2etests/regression_test.go
index aa8ca3b37..09468d493 100644
--- a/e2etests/regression_test.go
+++ b/e2etests/regression_test.go
@@ -284,6 +284,27 @@ table with short col: RefreshAuthorizationPolicyCache {
class -> table -> table with short col
`,
},
+ {
+ name: "wrong_table_column",
+ script: `Chinchillas: {
+ shape: sql_table
+ id: int {constraint: primary_key}
+ whisker_len: int
+ fur_color: string
+ age: int
+ server: int {constraint: foreign_key}
+ caretaker: int {constraint: foreign_key}
+}
+
+Chinchillas_Collectibles: {
+ shape: sql_table
+ id: int
+ collectible: id {constraint: foreign_key}
+ chinchilla: id {constraint: foreign_key}
+}
+
+Chinchillas_Collectibles.chinchilla -> Chinchillas.id`,
+ },
}
runa(t, tcs)
diff --git a/e2etests/testdata/regression/wrong_table_column/dagre/board.exp.json b/e2etests/testdata/regression/wrong_table_column/dagre/board.exp.json
new file mode 100644
index 000000000..6f2224f03
--- /dev/null
+++ b/e2etests/testdata/regression/wrong_table_column/dagre/board.exp.json
@@ -0,0 +1,394 @@
+{
+ "name": "",
+ "fontFamily": "SourceSansPro",
+ "shapes": [
+ {
+ "id": "Chinchillas",
+ "type": "sql_table",
+ "pos": {
+ "x": 19,
+ "y": 244
+ },
+ "width": 259,
+ "height": 252,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#0A0F25",
+ "stroke": "#FFFFFF",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": [
+ {
+ "name": {
+ "label": "id",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 15,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 23,
+ "labelHeight": 26
+ },
+ "constraint": "primary_key",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "whisker_len",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 101,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 23,
+ "labelHeight": 26
+ },
+ "constraint": "",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "fur_color",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 77,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "string",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 48,
+ "labelHeight": 26
+ },
+ "constraint": "",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "age",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 30,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 23,
+ "labelHeight": 26
+ },
+ "constraint": "",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "server",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 52,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 23,
+ "labelHeight": 26
+ },
+ "constraint": "foreign_key",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "caretaker",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 80,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 23,
+ "labelHeight": 26
+ },
+ "constraint": "foreign_key",
+ "reference": ""
+ }
+ ],
+ "label": "Chinchillas",
+ "fontSize": 20,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 120,
+ "labelHeight": 36,
+ "zIndex": 0,
+ "level": 1,
+ "primaryAccentColor": "#0D32B2",
+ "secondaryAccentColor": "#4A6FF3",
+ "neutralAccentColor": "#676C7E"
+ },
+ {
+ "id": "Chinchillas_Collectibles",
+ "type": "sql_table",
+ "pos": {
+ "x": 0,
+ "y": 0
+ },
+ "width": 297,
+ "height": 144,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#0A0F25",
+ "stroke": "#FFFFFF",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": [
+ {
+ "name": {
+ "label": "id",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 15,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 23,
+ "labelHeight": 26
+ },
+ "constraint": "",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "collectible",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 88,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "id",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 15,
+ "labelHeight": 26
+ },
+ "constraint": "foreign_key",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "chinchilla",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 80,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "id",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 15,
+ "labelHeight": 26
+ },
+ "constraint": "foreign_key",
+ "reference": "Chinchillas.id"
+ }
+ ],
+ "label": "Chinchillas_Collectibles",
+ "fontSize": 20,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 257,
+ "labelHeight": 36,
+ "zIndex": 0,
+ "level": 1,
+ "primaryAccentColor": "#0D32B2",
+ "secondaryAccentColor": "#4A6FF3",
+ "neutralAccentColor": "#676C7E"
+ }
+ ],
+ "connections": [
+ {
+ "id": "(Chinchillas_Collectibles -> Chinchillas)[0]",
+ "src": "Chinchillas_Collectibles",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "Chinchillas",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 148.5,
+ "y": 144
+ },
+ {
+ "x": 148.5,
+ "y": 184
+ },
+ {
+ "x": 148.5,
+ "y": 204
+ },
+ {
+ "x": 148.5,
+ "y": 244
+ }
+ ],
+ "isCurve": true,
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 0
+ }
+ ]
+}
diff --git a/e2etests/testdata/regression/wrong_table_column/dagre/sketch.exp.svg b/e2etests/testdata/regression/wrong_table_column/dagre/sketch.exp.svg
new file mode 100644
index 000000000..85c13996e
--- /dev/null
+++ b/e2etests/testdata/regression/wrong_table_column/dagre/sketch.exp.svg
@@ -0,0 +1,49 @@
+
+
\ No newline at end of file
diff --git a/e2etests/testdata/regression/wrong_table_column/elk/board.exp.json b/e2etests/testdata/regression/wrong_table_column/elk/board.exp.json
new file mode 100644
index 000000000..2164a914a
--- /dev/null
+++ b/e2etests/testdata/regression/wrong_table_column/elk/board.exp.json
@@ -0,0 +1,385 @@
+{
+ "name": "",
+ "fontFamily": "SourceSansPro",
+ "shapes": [
+ {
+ "id": "Chinchillas",
+ "type": "sql_table",
+ "pos": {
+ "x": 31,
+ "y": 256
+ },
+ "width": 259,
+ "height": 252,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#0A0F25",
+ "stroke": "#FFFFFF",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": [
+ {
+ "name": {
+ "label": "id",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 15,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 23,
+ "labelHeight": 26
+ },
+ "constraint": "primary_key",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "whisker_len",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 101,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 23,
+ "labelHeight": 26
+ },
+ "constraint": "",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "fur_color",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 77,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "string",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 48,
+ "labelHeight": 26
+ },
+ "constraint": "",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "age",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 30,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 23,
+ "labelHeight": 26
+ },
+ "constraint": "",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "server",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 52,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 23,
+ "labelHeight": 26
+ },
+ "constraint": "foreign_key",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "caretaker",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 80,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 23,
+ "labelHeight": 26
+ },
+ "constraint": "foreign_key",
+ "reference": ""
+ }
+ ],
+ "label": "Chinchillas",
+ "fontSize": 20,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 120,
+ "labelHeight": 36,
+ "zIndex": 0,
+ "level": 1,
+ "primaryAccentColor": "#0D32B2",
+ "secondaryAccentColor": "#4A6FF3",
+ "neutralAccentColor": "#676C7E"
+ },
+ {
+ "id": "Chinchillas_Collectibles",
+ "type": "sql_table",
+ "pos": {
+ "x": 12,
+ "y": 12
+ },
+ "width": 297,
+ "height": 144,
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "borderRadius": 0,
+ "fill": "#0A0F25",
+ "stroke": "#FFFFFF",
+ "shadow": false,
+ "3d": false,
+ "multiple": false,
+ "tooltip": "",
+ "link": "",
+ "icon": null,
+ "iconPosition": "",
+ "blend": false,
+ "fields": null,
+ "methods": null,
+ "columns": [
+ {
+ "name": {
+ "label": "id",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 15,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 23,
+ "labelHeight": 26
+ },
+ "constraint": "",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "collectible",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 88,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "id",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 15,
+ "labelHeight": 26
+ },
+ "constraint": "foreign_key",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "chinchilla",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 80,
+ "labelHeight": 26
+ },
+ "type": {
+ "label": "id",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 15,
+ "labelHeight": 26
+ },
+ "constraint": "foreign_key",
+ "reference": "Chinchillas.id"
+ }
+ ],
+ "label": "Chinchillas_Collectibles",
+ "fontSize": 20,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#0A0F25",
+ "italic": false,
+ "bold": true,
+ "underline": false,
+ "labelWidth": 257,
+ "labelHeight": 36,
+ "zIndex": 0,
+ "level": 1,
+ "primaryAccentColor": "#0D32B2",
+ "secondaryAccentColor": "#4A6FF3",
+ "neutralAccentColor": "#676C7E"
+ }
+ ],
+ "connections": [
+ {
+ "id": "(Chinchillas_Collectibles -> Chinchillas)[0]",
+ "src": "Chinchillas_Collectibles",
+ "srcArrow": "none",
+ "srcLabel": "",
+ "dst": "Chinchillas",
+ "dstArrow": "triangle",
+ "dstLabel": "",
+ "opacity": 1,
+ "strokeDash": 0,
+ "strokeWidth": 2,
+ "stroke": "#0D32B2",
+ "label": "",
+ "fontSize": 16,
+ "fontFamily": "DEFAULT",
+ "language": "",
+ "color": "#676C7E",
+ "italic": true,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0,
+ "labelPosition": "",
+ "labelPercentage": 0,
+ "route": [
+ {
+ "x": 160.5,
+ "y": 156
+ },
+ {
+ "x": 160.5,
+ "y": 256
+ }
+ ],
+ "animated": false,
+ "tooltip": "",
+ "icon": null,
+ "zIndex": 0
+ }
+ ]
+}
diff --git a/e2etests/testdata/regression/wrong_table_column/elk/sketch.exp.svg b/e2etests/testdata/regression/wrong_table_column/elk/sketch.exp.svg
new file mode 100644
index 000000000..e579c2f59
--- /dev/null
+++ b/e2etests/testdata/regression/wrong_table_column/elk/sketch.exp.svg
@@ -0,0 +1,49 @@
+
+
\ No newline at end of file
diff --git a/testdata/d2compiler/TestCompile/wrong_column_index.exp.json b/testdata/d2compiler/TestCompile/wrong_column_index.exp.json
new file mode 100644
index 000000000..8b5df5ba5
--- /dev/null
+++ b/testdata/d2compiler/TestCompile/wrong_column_index.exp.json
@@ -0,0 +1,1163 @@
+{
+ "graph": {
+ "ast": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,0:0:0-17:53:406",
+ "nodes": [
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,0:0:0-8:1:204",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,0:0:0-0:11:11",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,0:0:0-0:11:11",
+ "value": [
+ {
+ "string": "Chinchillas",
+ "raw_string": "Chinchillas"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {},
+ "value": {
+ "map": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,0:13:13-8:0:203",
+ "nodes": [
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,1:2:17-1:18:33",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,1:2:17-1:7:22",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,1:2:17-1:7:22",
+ "value": [
+ {
+ "string": "shape",
+ "raw_string": "shape"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {},
+ "value": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,1:9:24-1:18:33",
+ "value": [
+ {
+ "string": "sql_table",
+ "raw_string": "sql_table"
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,2:2:36-2:35:69",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,2:2:36-2:4:38",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,2:2:36-2:4:38",
+ "value": [
+ {
+ "string": "id",
+ "raw_string": "id"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,2:6:40-2:9:43",
+ "value": [
+ {
+ "string": "int",
+ "raw_string": "int"
+ }
+ ]
+ }
+ },
+ "value": {
+ "map": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,2:10:44-2:34:68",
+ "nodes": [
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,2:11:45-2:34:68",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,2:11:45-2:21:55",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,2:11:45-2:21:55",
+ "value": [
+ {
+ "string": "constraint",
+ "raw_string": "constraint"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {},
+ "value": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,2:23:57-2:34:68",
+ "value": [
+ {
+ "string": "primary_key",
+ "raw_string": "primary_key"
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,3:2:72-3:18:88",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,3:2:72-3:13:83",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,3:2:72-3:13:83",
+ "value": [
+ {
+ "string": "whisker_len",
+ "raw_string": "whisker_len"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {},
+ "value": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,3:15:85-3:18:88",
+ "value": [
+ {
+ "string": "int",
+ "raw_string": "int"
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,4:2:91-4:19:108",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,4:2:91-4:11:100",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,4:2:91-4:11:100",
+ "value": [
+ {
+ "string": "fur_color",
+ "raw_string": "fur_color"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {},
+ "value": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,4:13:102-4:19:108",
+ "value": [
+ {
+ "string": "string",
+ "raw_string": "string"
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,5:2:111-5:10:119",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,5:2:111-5:5:114",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,5:2:111-5:5:114",
+ "value": [
+ {
+ "string": "age",
+ "raw_string": "age"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {},
+ "value": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,5:7:116-5:10:119",
+ "value": [
+ {
+ "string": "int",
+ "raw_string": "int"
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,6:2:122-6:39:159",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,6:2:122-6:8:128",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,6:2:122-6:8:128",
+ "value": [
+ {
+ "string": "server",
+ "raw_string": "server"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,6:10:130-6:13:133",
+ "value": [
+ {
+ "string": "int",
+ "raw_string": "int"
+ }
+ ]
+ }
+ },
+ "value": {
+ "map": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,6:14:134-6:38:158",
+ "nodes": [
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,6:15:135-6:38:158",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,6:15:135-6:25:145",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,6:15:135-6:25:145",
+ "value": [
+ {
+ "string": "constraint",
+ "raw_string": "constraint"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {},
+ "value": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,6:27:147-6:38:158",
+ "value": [
+ {
+ "string": "foreign_key",
+ "raw_string": "foreign_key"
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,7:2:162-7:42:202",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,7:2:162-7:11:171",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,7:2:162-7:11:171",
+ "value": [
+ {
+ "string": "caretaker",
+ "raw_string": "caretaker"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,7:13:173-7:16:176",
+ "value": [
+ {
+ "string": "int",
+ "raw_string": "int"
+ }
+ ]
+ }
+ },
+ "value": {
+ "map": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,7:17:177-7:41:201",
+ "nodes": [
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,7:18:178-7:41:201",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,7:18:178-7:28:188",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,7:18:178-7:28:188",
+ "value": [
+ {
+ "string": "constraint",
+ "raw_string": "constraint"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {},
+ "value": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,7:30:190-7:41:201",
+ "value": [
+ {
+ "string": "foreign_key",
+ "raw_string": "foreign_key"
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,10:0:206-15:1:351",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,10:0:206-10:24:230",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,10:0:206-10:24:230",
+ "value": [
+ {
+ "string": "Chinchillas_Collectibles",
+ "raw_string": "Chinchillas_Collectibles"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {},
+ "value": {
+ "map": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,10:26:232-15:0:350",
+ "nodes": [
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,11:2:236-11:18:252",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,11:2:236-11:7:241",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,11:2:236-11:7:241",
+ "value": [
+ {
+ "string": "shape",
+ "raw_string": "shape"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {},
+ "value": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,11:9:243-11:18:252",
+ "value": [
+ {
+ "string": "sql_table",
+ "raw_string": "sql_table"
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,12:2:255-12:9:262",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,12:2:255-12:4:257",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,12:2:255-12:4:257",
+ "value": [
+ {
+ "string": "id",
+ "raw_string": "id"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {},
+ "value": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,12:6:259-12:9:262",
+ "value": [
+ {
+ "string": "int",
+ "raw_string": "int"
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,13:2:265-13:43:306",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,13:2:265-13:13:276",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,13:2:265-13:13:276",
+ "value": [
+ {
+ "string": "collectible",
+ "raw_string": "collectible"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,13:15:278-13:17:280",
+ "value": [
+ {
+ "string": "id",
+ "raw_string": "id"
+ }
+ ]
+ }
+ },
+ "value": {
+ "map": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,13:18:281-13:42:305",
+ "nodes": [
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,13:19:282-13:42:305",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,13:19:282-13:29:292",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,13:19:282-13:29:292",
+ "value": [
+ {
+ "string": "constraint",
+ "raw_string": "constraint"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {},
+ "value": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,13:31:294-13:42:305",
+ "value": [
+ {
+ "string": "foreign_key",
+ "raw_string": "foreign_key"
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,14:2:309-14:42:349",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,14:2:309-14:12:319",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,14:2:309-14:12:319",
+ "value": [
+ {
+ "string": "chinchilla",
+ "raw_string": "chinchilla"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,14:14:321-14:16:323",
+ "value": [
+ {
+ "string": "id",
+ "raw_string": "id"
+ }
+ ]
+ }
+ },
+ "value": {
+ "map": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,14:17:324-14:41:348",
+ "nodes": [
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,14:18:325-14:41:348",
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,14:18:325-14:28:335",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,14:18:325-14:28:335",
+ "value": [
+ {
+ "string": "constraint",
+ "raw_string": "constraint"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "primary": {},
+ "value": {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,14:30:337-14:41:348",
+ "value": [
+ {
+ "string": "foreign_key",
+ "raw_string": "foreign_key"
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ },
+ {
+ "map_key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,17:0:353-17:53:406",
+ "edges": [
+ {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,17:0:353-17:53:406",
+ "src": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,17:0:353-17:36:389",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,17:0:353-17:24:377",
+ "value": [
+ {
+ "string": "Chinchillas_Collectibles",
+ "raw_string": "Chinchillas_Collectibles"
+ }
+ ]
+ }
+ },
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,17:25:378-17:35:388",
+ "value": [
+ {
+ "string": "chinchilla",
+ "raw_string": "chinchilla"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "src_arrow": "",
+ "dst": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,17:38:391-17:53:406",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,17:39:392-17:50:403",
+ "value": [
+ {
+ "string": "Chinchillas",
+ "raw_string": "Chinchillas"
+ }
+ ]
+ }
+ },
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,17:51:404-17:53:406",
+ "value": [
+ {
+ "string": "id",
+ "raw_string": "id"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "dst_arrow": ">"
+ }
+ ],
+ "primary": {},
+ "value": {}
+ }
+ }
+ ]
+ },
+ "root": {
+ "id": "",
+ "id_val": "",
+ "label_dimensions": {
+ "width": 0,
+ "height": 0
+ },
+ "attributes": {
+ "label": {
+ "value": ""
+ },
+ "style": {},
+ "near_key": null,
+ "shape": {
+ "value": ""
+ },
+ "direction": {
+ "value": ""
+ }
+ },
+ "zIndex": 0
+ },
+ "edges": [
+ {
+ "index": 0,
+ "minWidth": 0,
+ "minHeight": 0,
+ "srcTableColumnIndex": 2,
+ "dstTableColumnIndex": 0,
+ "label_dimensions": {
+ "width": 0,
+ "height": 0
+ },
+ "isCurve": false,
+ "src_arrow": false,
+ "dst_arrow": true,
+ "references": [
+ {
+ "map_key_edge_index": 0
+ }
+ ],
+ "attributes": {
+ "label": {
+ "value": ""
+ },
+ "style": {},
+ "near_key": null,
+ "shape": {
+ "value": ""
+ },
+ "direction": {
+ "value": ""
+ }
+ },
+ "zIndex": 0
+ }
+ ],
+ "objects": [
+ {
+ "id": "Chinchillas",
+ "id_val": "Chinchillas",
+ "label_dimensions": {
+ "width": 0,
+ "height": 0
+ },
+ "references": [
+ {
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,0:0:0-0:11:11",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,0:0:0-0:11:11",
+ "value": [
+ {
+ "string": "Chinchillas",
+ "raw_string": "Chinchillas"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "key_path_index": 0,
+ "map_key_edge_index": 0
+ },
+ {
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,17:38:391-17:53:406",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,17:39:392-17:50:403",
+ "value": [
+ {
+ "string": "Chinchillas",
+ "raw_string": "Chinchillas"
+ }
+ ]
+ }
+ },
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,17:51:404-17:53:406",
+ "value": [
+ {
+ "string": "id",
+ "raw_string": "id"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "key_path_index": 0,
+ "map_key_edge_index": 0
+ }
+ ],
+ "sql_table": {
+ "columns": [
+ {
+ "name": {
+ "label": "id",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "constraint": "primary_key",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "whisker_len",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "constraint": "",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "fur_color",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "type": {
+ "label": "string",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "constraint": "",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "age",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "constraint": "",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "server",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "constraint": "foreign_key",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "caretaker",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "constraint": "foreign_key",
+ "reference": ""
+ }
+ ]
+ },
+ "attributes": {
+ "label": {
+ "value": "Chinchillas"
+ },
+ "style": {},
+ "near_key": null,
+ "shape": {
+ "value": "sql_table"
+ },
+ "direction": {
+ "value": ""
+ }
+ },
+ "zIndex": 0
+ },
+ {
+ "id": "Chinchillas_Collectibles",
+ "id_val": "Chinchillas_Collectibles",
+ "label_dimensions": {
+ "width": 0,
+ "height": 0
+ },
+ "references": [
+ {
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,10:0:206-10:24:230",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,10:0:206-10:24:230",
+ "value": [
+ {
+ "string": "Chinchillas_Collectibles",
+ "raw_string": "Chinchillas_Collectibles"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "key_path_index": 0,
+ "map_key_edge_index": 0
+ },
+ {
+ "key": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,17:0:353-17:36:389",
+ "path": [
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,17:0:353-17:24:377",
+ "value": [
+ {
+ "string": "Chinchillas_Collectibles",
+ "raw_string": "Chinchillas_Collectibles"
+ }
+ ]
+ }
+ },
+ {
+ "unquoted_string": {
+ "range": "d2/testdata/d2compiler/TestCompile/wrong_column_index.d2,17:25:378-17:35:388",
+ "value": [
+ {
+ "string": "chinchilla",
+ "raw_string": "chinchilla"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "key_path_index": 0,
+ "map_key_edge_index": 0
+ }
+ ],
+ "sql_table": {
+ "columns": [
+ {
+ "name": {
+ "label": "id",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "type": {
+ "label": "int",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "constraint": "",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "collectible",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "type": {
+ "label": "id",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "constraint": "foreign_key",
+ "reference": ""
+ },
+ {
+ "name": {
+ "label": "chinchilla",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "type": {
+ "label": "id",
+ "fontSize": 0,
+ "fontFamily": "",
+ "language": "",
+ "color": "",
+ "italic": false,
+ "bold": false,
+ "underline": false,
+ "labelWidth": 0,
+ "labelHeight": 0
+ },
+ "constraint": "foreign_key",
+ "reference": "Chinchillas.id"
+ }
+ ]
+ },
+ "attributes": {
+ "label": {
+ "value": "Chinchillas_Collectibles"
+ },
+ "style": {},
+ "near_key": null,
+ "shape": {
+ "value": "sql_table"
+ },
+ "direction": {
+ "value": ""
+ }
+ },
+ "zIndex": 0
+ }
+ ]
+ },
+ "err": null
+}