promql

package
v0.164.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 13, 2022 License: MIT Imports: 17 Imported by: 0

Documentation

Index

Constants

View Source
const ChangesKind = "changes"
View Source
const DefaultUpperBoundColumnLabel = "le"
View Source
const EmptyTableKind = "emptyTable"
View Source
const ExtrapolatedRateKind = "extrapolatedRate"
View Source
const HistogramQuantileKind = "promHistogramQuantile"

TODO: Added "prom" prefix to avoid duplicate registration error. Decide whether to remove universe version of this function.

View Source
const HoltWintersKind = "promHoltWinters"
View Source
const InstantRateKind = "instantRate"
View Source
const (
	// LabelReplaceKind is the Kind for the LabelReplace Flux function
	LabelReplaceKind = "labelReplace"
)
View Source
const LinearRegressionKind = "linearRegression"
View Source
const ResetsKind = "resets"
View Source
const (
	// TimestampKind is the Kind for the Timestamp Flux function
	TimestampKind = "timestamp"
)

Variables

View Source
var FluxTestPackages = []*ast.Package{&ast.Package{
	BaseNode: ast.BaseNode{
		Comments: nil,
		Errors:   nil,
		Loc:      nil,
	},
	Files: []*ast.File{&ast.File{
		BaseNode: ast.BaseNode{
			Comments: nil,
			Errors:   nil,
			Loc: &ast.SourceLocation{
				End: ast.Position{
					Column: 103,
					Line:   108,
				},
				File:   "join_test.flux",
				Source: "package promql_test\n\n\nimport \"internal/promql\"\nimport \"testing\"\n\ninData =\n    \"\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag0,_value\n,,0,2018-12-19T22:13:30Z,_m,a,t,1\n,,0,2018-12-19T22:13:40Z,_m,a,t,2\n,,0,2018-12-19T22:13:50Z,_m,a,t,3\n,,0,2018-12-19T22:14:00Z,_m,a,t,4\n,,0,2018-12-19T22:14:10Z,_m,a,t,5\n,,0,2018-12-19T22:14:20Z,_m,a,t,6\n,,1,2018-12-19T22:13:30Z,_m,a,g,2\n,,1,2018-12-19T22:13:40Z,_m,a,g,3\n,,1,2018-12-19T22:13:50Z,_m,a,g,4\n,,1,2018-12-19T22:14:00Z,_m,a,g,5\n,,1,2018-12-19T22:14:10Z,_m,a,g,6\n,,1,2018-12-19T22:14:20Z,_m,a,g,7\n\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag1,_value\n,,2,2018-12-19T22:13:30Z,_m,a,t,1\n,,2,2018-12-19T22:13:40Z,_m,a,t,2\n,,2,2018-12-19T22:13:50Z,_m,a,t,3\n,,2,2018-12-19T22:14:00Z,_m,a,t,4\n,,2,2018-12-19T22:14:10Z,_m,a,t,5\n,,2,2018-12-19T22:14:20Z,_m,a,t,6\n,,3,2018-12-19T22:13:30Z,_m,a,g,1\n,,3,2018-12-19T22:13:40Z,_m,a,g,2\n,,3,2018-12-19T22:13:50Z,_m,a,g,3\n,,3,2018-12-19T22:14:00Z,_m,a,g,4\n,,3,2018-12-19T22:14:10Z,_m,a,g,5\n,,3,2018-12-19T22:14:20Z,_m,a,g,6\n\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag0,_value\n,,4,2018-12-19T22:13:30Z,_m,b,s,1\n,,4,2018-12-19T22:13:40Z,_m,b,s,2\n,,4,2018-12-19T22:13:50Z,_m,b,s,3\n,,4,2018-12-19T22:14:00Z,_m,b,s,4\n,,4,2018-12-19T22:14:10Z,_m,b,s,5\n,,4,2018-12-19T22:14:20Z,_m,b,s,6\n,,5,2018-12-19T22:13:30Z,_m,b,g,1\n,,5,2018-12-19T22:13:40Z,_m,b,g,2\n,,5,2018-12-19T22:13:50Z,_m,b,g,3\n,,5,2018-12-19T22:14:00Z,_m,b,g,4\n,,5,2018-12-19T22:14:10Z,_m,b,g,5\n,,5,2018-12-19T22:14:20Z,_m,b,g,6\n\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag1,_value\n,,6,2018-12-19T22:13:30Z,_m,b,s,1\n,,6,2018-12-19T22:13:40Z,_m,b,s,2\n,,6,2018-12-19T22:13:50Z,_m,b,s,3\n,,6,2018-12-19T22:14:00Z,_m,b,s,4\n,,6,2018-12-19T22:14:10Z,_m,b,s,5\n,,6,2018-12-19T22:14:20Z,_m,b,s,6\n,,7,2018-12-19T22:13:30Z,_m,b,p,1\n,,7,2018-12-19T22:13:40Z,_m,b,p,2\n,,7,2018-12-19T22:13:50Z,_m,b,p,3\n,,7,2018-12-19T22:14:00Z,_m,b,p,4\n,,7,2018-12-19T22:14:10Z,_m,b,p,5\n,,7,2018-12-19T22:14:20Z,_m,b,p,6\n\"\noutData =\n    \"\n#datatype,string,long,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,string,string,double,double\n#group,false,false,true,true,false,true,true,false,false\n#default,_result,,,,,,,,\n,result,table,_start,_stop,_time,_measurement,tag0,value_a,value_b\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:13:30Z,_m,g,2,1\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:13:40Z,_m,g,3,2\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:13:50Z,_m,g,4,3\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:14:00Z,_m,g,5,4\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:14:10Z,_m,g,6,5\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:14:20Z,_m,g,7,6\n\"\njoin_test_fn = (table=<-) => {\n    a =\n        table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"a\")\n            |> drop(columns: [\"_field\"])\n            |> rename(columns: {_value: \"value_a\"})\n    b =\n        table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"b\")\n            |> drop(columns: [\"_field\"])\n            |> rename(columns: {_value: \"value_b\"})\n\n    return promql.join(left: a, right: b, fn: (left, right) => ({left with value_b: right.value_b}))\n}\n\ntest prom_join = () =>\n    ({input: testing.loadStorage(csv: inData), want: testing.loadMem(csv: outData), fn: join_test_fn})",
				Start: ast.Position{
					Column: 1,
					Line:   1,
				},
			},
		},
		Body: []ast.Statement{&ast.VariableAssignment{
			BaseNode: ast.BaseNode{
				Comments: nil,
				Errors:   nil,
				Loc: &ast.SourceLocation{
					End: ast.Position{
						Column: 2,
						Line:   76,
					},
					File:   "join_test.flux",
					Source: "inData =\n    \"\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag0,_value\n,,0,2018-12-19T22:13:30Z,_m,a,t,1\n,,0,2018-12-19T22:13:40Z,_m,a,t,2\n,,0,2018-12-19T22:13:50Z,_m,a,t,3\n,,0,2018-12-19T22:14:00Z,_m,a,t,4\n,,0,2018-12-19T22:14:10Z,_m,a,t,5\n,,0,2018-12-19T22:14:20Z,_m,a,t,6\n,,1,2018-12-19T22:13:30Z,_m,a,g,2\n,,1,2018-12-19T22:13:40Z,_m,a,g,3\n,,1,2018-12-19T22:13:50Z,_m,a,g,4\n,,1,2018-12-19T22:14:00Z,_m,a,g,5\n,,1,2018-12-19T22:14:10Z,_m,a,g,6\n,,1,2018-12-19T22:14:20Z,_m,a,g,7\n\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag1,_value\n,,2,2018-12-19T22:13:30Z,_m,a,t,1\n,,2,2018-12-19T22:13:40Z,_m,a,t,2\n,,2,2018-12-19T22:13:50Z,_m,a,t,3\n,,2,2018-12-19T22:14:00Z,_m,a,t,4\n,,2,2018-12-19T22:14:10Z,_m,a,t,5\n,,2,2018-12-19T22:14:20Z,_m,a,t,6\n,,3,2018-12-19T22:13:30Z,_m,a,g,1\n,,3,2018-12-19T22:13:40Z,_m,a,g,2\n,,3,2018-12-19T22:13:50Z,_m,a,g,3\n,,3,2018-12-19T22:14:00Z,_m,a,g,4\n,,3,2018-12-19T22:14:10Z,_m,a,g,5\n,,3,2018-12-19T22:14:20Z,_m,a,g,6\n\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag0,_value\n,,4,2018-12-19T22:13:30Z,_m,b,s,1\n,,4,2018-12-19T22:13:40Z,_m,b,s,2\n,,4,2018-12-19T22:13:50Z,_m,b,s,3\n,,4,2018-12-19T22:14:00Z,_m,b,s,4\n,,4,2018-12-19T22:14:10Z,_m,b,s,5\n,,4,2018-12-19T22:14:20Z,_m,b,s,6\n,,5,2018-12-19T22:13:30Z,_m,b,g,1\n,,5,2018-12-19T22:13:40Z,_m,b,g,2\n,,5,2018-12-19T22:13:50Z,_m,b,g,3\n,,5,2018-12-19T22:14:00Z,_m,b,g,4\n,,5,2018-12-19T22:14:10Z,_m,b,g,5\n,,5,2018-12-19T22:14:20Z,_m,b,g,6\n\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag1,_value\n,,6,2018-12-19T22:13:30Z,_m,b,s,1\n,,6,2018-12-19T22:13:40Z,_m,b,s,2\n,,6,2018-12-19T22:13:50Z,_m,b,s,3\n,,6,2018-12-19T22:14:00Z,_m,b,s,4\n,,6,2018-12-19T22:14:10Z,_m,b,s,5\n,,6,2018-12-19T22:14:20Z,_m,b,s,6\n,,7,2018-12-19T22:13:30Z,_m,b,p,1\n,,7,2018-12-19T22:13:40Z,_m,b,p,2\n,,7,2018-12-19T22:13:50Z,_m,b,p,3\n,,7,2018-12-19T22:14:00Z,_m,b,p,4\n,,7,2018-12-19T22:14:10Z,_m,b,p,5\n,,7,2018-12-19T22:14:20Z,_m,b,p,6\n\"",
					Start: ast.Position{
						Column: 1,
						Line:   7,
					},
				},
			},
			ID: &ast.Identifier{
				BaseNode: ast.BaseNode{
					Comments: nil,
					Errors:   nil,
					Loc: &ast.SourceLocation{
						End: ast.Position{
							Column: 7,
							Line:   7,
						},
						File:   "join_test.flux",
						Source: "inData",
						Start: ast.Position{
							Column: 1,
							Line:   7,
						},
					},
				},
				Name: "inData",
			},
			Init: &ast.StringLiteral{
				BaseNode: ast.BaseNode{
					Comments: nil,
					Errors:   nil,
					Loc: &ast.SourceLocation{
						End: ast.Position{
							Column: 2,
							Line:   76,
						},
						File:   "join_test.flux",
						Source: "\"\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag0,_value\n,,0,2018-12-19T22:13:30Z,_m,a,t,1\n,,0,2018-12-19T22:13:40Z,_m,a,t,2\n,,0,2018-12-19T22:13:50Z,_m,a,t,3\n,,0,2018-12-19T22:14:00Z,_m,a,t,4\n,,0,2018-12-19T22:14:10Z,_m,a,t,5\n,,0,2018-12-19T22:14:20Z,_m,a,t,6\n,,1,2018-12-19T22:13:30Z,_m,a,g,2\n,,1,2018-12-19T22:13:40Z,_m,a,g,3\n,,1,2018-12-19T22:13:50Z,_m,a,g,4\n,,1,2018-12-19T22:14:00Z,_m,a,g,5\n,,1,2018-12-19T22:14:10Z,_m,a,g,6\n,,1,2018-12-19T22:14:20Z,_m,a,g,7\n\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag1,_value\n,,2,2018-12-19T22:13:30Z,_m,a,t,1\n,,2,2018-12-19T22:13:40Z,_m,a,t,2\n,,2,2018-12-19T22:13:50Z,_m,a,t,3\n,,2,2018-12-19T22:14:00Z,_m,a,t,4\n,,2,2018-12-19T22:14:10Z,_m,a,t,5\n,,2,2018-12-19T22:14:20Z,_m,a,t,6\n,,3,2018-12-19T22:13:30Z,_m,a,g,1\n,,3,2018-12-19T22:13:40Z,_m,a,g,2\n,,3,2018-12-19T22:13:50Z,_m,a,g,3\n,,3,2018-12-19T22:14:00Z,_m,a,g,4\n,,3,2018-12-19T22:14:10Z,_m,a,g,5\n,,3,2018-12-19T22:14:20Z,_m,a,g,6\n\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag0,_value\n,,4,2018-12-19T22:13:30Z,_m,b,s,1\n,,4,2018-12-19T22:13:40Z,_m,b,s,2\n,,4,2018-12-19T22:13:50Z,_m,b,s,3\n,,4,2018-12-19T22:14:00Z,_m,b,s,4\n,,4,2018-12-19T22:14:10Z,_m,b,s,5\n,,4,2018-12-19T22:14:20Z,_m,b,s,6\n,,5,2018-12-19T22:13:30Z,_m,b,g,1\n,,5,2018-12-19T22:13:40Z,_m,b,g,2\n,,5,2018-12-19T22:13:50Z,_m,b,g,3\n,,5,2018-12-19T22:14:00Z,_m,b,g,4\n,,5,2018-12-19T22:14:10Z,_m,b,g,5\n,,5,2018-12-19T22:14:20Z,_m,b,g,6\n\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag1,_value\n,,6,2018-12-19T22:13:30Z,_m,b,s,1\n,,6,2018-12-19T22:13:40Z,_m,b,s,2\n,,6,2018-12-19T22:13:50Z,_m,b,s,3\n,,6,2018-12-19T22:14:00Z,_m,b,s,4\n,,6,2018-12-19T22:14:10Z,_m,b,s,5\n,,6,2018-12-19T22:14:20Z,_m,b,s,6\n,,7,2018-12-19T22:13:30Z,_m,b,p,1\n,,7,2018-12-19T22:13:40Z,_m,b,p,2\n,,7,2018-12-19T22:13:50Z,_m,b,p,3\n,,7,2018-12-19T22:14:00Z,_m,b,p,4\n,,7,2018-12-19T22:14:10Z,_m,b,p,5\n,,7,2018-12-19T22:14:20Z,_m,b,p,6\n\"",
						Start: ast.Position{
							Column: 5,
							Line:   8,
						},
					},
				},
				Value: "\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag0,_value\n,,0,2018-12-19T22:13:30Z,_m,a,t,1\n,,0,2018-12-19T22:13:40Z,_m,a,t,2\n,,0,2018-12-19T22:13:50Z,_m,a,t,3\n,,0,2018-12-19T22:14:00Z,_m,a,t,4\n,,0,2018-12-19T22:14:10Z,_m,a,t,5\n,,0,2018-12-19T22:14:20Z,_m,a,t,6\n,,1,2018-12-19T22:13:30Z,_m,a,g,2\n,,1,2018-12-19T22:13:40Z,_m,a,g,3\n,,1,2018-12-19T22:13:50Z,_m,a,g,4\n,,1,2018-12-19T22:14:00Z,_m,a,g,5\n,,1,2018-12-19T22:14:10Z,_m,a,g,6\n,,1,2018-12-19T22:14:20Z,_m,a,g,7\n\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag1,_value\n,,2,2018-12-19T22:13:30Z,_m,a,t,1\n,,2,2018-12-19T22:13:40Z,_m,a,t,2\n,,2,2018-12-19T22:13:50Z,_m,a,t,3\n,,2,2018-12-19T22:14:00Z,_m,a,t,4\n,,2,2018-12-19T22:14:10Z,_m,a,t,5\n,,2,2018-12-19T22:14:20Z,_m,a,t,6\n,,3,2018-12-19T22:13:30Z,_m,a,g,1\n,,3,2018-12-19T22:13:40Z,_m,a,g,2\n,,3,2018-12-19T22:13:50Z,_m,a,g,3\n,,3,2018-12-19T22:14:00Z,_m,a,g,4\n,,3,2018-12-19T22:14:10Z,_m,a,g,5\n,,3,2018-12-19T22:14:20Z,_m,a,g,6\n\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag0,_value\n,,4,2018-12-19T22:13:30Z,_m,b,s,1\n,,4,2018-12-19T22:13:40Z,_m,b,s,2\n,,4,2018-12-19T22:13:50Z,_m,b,s,3\n,,4,2018-12-19T22:14:00Z,_m,b,s,4\n,,4,2018-12-19T22:14:10Z,_m,b,s,5\n,,4,2018-12-19T22:14:20Z,_m,b,s,6\n,,5,2018-12-19T22:13:30Z,_m,b,g,1\n,,5,2018-12-19T22:13:40Z,_m,b,g,2\n,,5,2018-12-19T22:13:50Z,_m,b,g,3\n,,5,2018-12-19T22:14:00Z,_m,b,g,4\n,,5,2018-12-19T22:14:10Z,_m,b,g,5\n,,5,2018-12-19T22:14:20Z,_m,b,g,6\n\n#datatype,string,long,dateTime:RFC3339,string,string,string,double\n#group,false,false,false,true,true,true,false\n#default,_result,,,,,,\n,result,table,_time,_measurement,_field,tag1,_value\n,,6,2018-12-19T22:13:30Z,_m,b,s,1\n,,6,2018-12-19T22:13:40Z,_m,b,s,2\n,,6,2018-12-19T22:13:50Z,_m,b,s,3\n,,6,2018-12-19T22:14:00Z,_m,b,s,4\n,,6,2018-12-19T22:14:10Z,_m,b,s,5\n,,6,2018-12-19T22:14:20Z,_m,b,s,6\n,,7,2018-12-19T22:13:30Z,_m,b,p,1\n,,7,2018-12-19T22:13:40Z,_m,b,p,2\n,,7,2018-12-19T22:13:50Z,_m,b,p,3\n,,7,2018-12-19T22:14:00Z,_m,b,p,4\n,,7,2018-12-19T22:14:10Z,_m,b,p,5\n,,7,2018-12-19T22:14:20Z,_m,b,p,6\n",
			},
		}, &ast.VariableAssignment{
			BaseNode: ast.BaseNode{
				Comments: nil,
				Errors:   nil,
				Loc: &ast.SourceLocation{
					End: ast.Position{
						Column: 2,
						Line:   89,
					},
					File:   "join_test.flux",
					Source: "outData =\n    \"\n#datatype,string,long,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,string,string,double,double\n#group,false,false,true,true,false,true,true,false,false\n#default,_result,,,,,,,,\n,result,table,_start,_stop,_time,_measurement,tag0,value_a,value_b\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:13:30Z,_m,g,2,1\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:13:40Z,_m,g,3,2\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:13:50Z,_m,g,4,3\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:14:00Z,_m,g,5,4\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:14:10Z,_m,g,6,5\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:14:20Z,_m,g,7,6\n\"",
					Start: ast.Position{
						Column: 1,
						Line:   77,
					},
				},
			},
			ID: &ast.Identifier{
				BaseNode: ast.BaseNode{
					Comments: nil,
					Errors:   nil,
					Loc: &ast.SourceLocation{
						End: ast.Position{
							Column: 8,
							Line:   77,
						},
						File:   "join_test.flux",
						Source: "outData",
						Start: ast.Position{
							Column: 1,
							Line:   77,
						},
					},
				},
				Name: "outData",
			},
			Init: &ast.StringLiteral{
				BaseNode: ast.BaseNode{
					Comments: nil,
					Errors:   nil,
					Loc: &ast.SourceLocation{
						End: ast.Position{
							Column: 2,
							Line:   89,
						},
						File:   "join_test.flux",
						Source: "\"\n#datatype,string,long,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,string,string,double,double\n#group,false,false,true,true,false,true,true,false,false\n#default,_result,,,,,,,,\n,result,table,_start,_stop,_time,_measurement,tag0,value_a,value_b\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:13:30Z,_m,g,2,1\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:13:40Z,_m,g,3,2\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:13:50Z,_m,g,4,3\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:14:00Z,_m,g,5,4\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:14:10Z,_m,g,6,5\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:14:20Z,_m,g,7,6\n\"",
						Start: ast.Position{
							Column: 5,
							Line:   78,
						},
					},
				},
				Value: "\n#datatype,string,long,dateTime:RFC3339,dateTime:RFC3339,dateTime:RFC3339,string,string,double,double\n#group,false,false,true,true,false,true,true,false,false\n#default,_result,,,,,,,,\n,result,table,_start,_stop,_time,_measurement,tag0,value_a,value_b\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:13:30Z,_m,g,2,1\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:13:40Z,_m,g,3,2\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:13:50Z,_m,g,4,3\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:14:00Z,_m,g,5,4\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:14:10Z,_m,g,6,5\n,,0,2018-12-19T00:00:00Z,2018-12-20T00:00:00Z,2018-12-19T22:14:20Z,_m,g,7,6\n",
			},
		}, &ast.VariableAssignment{
			BaseNode: ast.BaseNode{
				Comments: nil,
				Errors:   nil,
				Loc: &ast.SourceLocation{
					End: ast.Position{
						Column: 2,
						Line:   105,
					},
					File:   "join_test.flux",
					Source: "join_test_fn = (table=<-) => {\n    a =\n        table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"a\")\n            |> drop(columns: [\"_field\"])\n            |> rename(columns: {_value: \"value_a\"})\n    b =\n        table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"b\")\n            |> drop(columns: [\"_field\"])\n            |> rename(columns: {_value: \"value_b\"})\n\n    return promql.join(left: a, right: b, fn: (left, right) => ({left with value_b: right.value_b}))\n}",
					Start: ast.Position{
						Column: 1,
						Line:   90,
					},
				},
			},
			ID: &ast.Identifier{
				BaseNode: ast.BaseNode{
					Comments: nil,
					Errors:   nil,
					Loc: &ast.SourceLocation{
						End: ast.Position{
							Column: 13,
							Line:   90,
						},
						File:   "join_test.flux",
						Source: "join_test_fn",
						Start: ast.Position{
							Column: 1,
							Line:   90,
						},
					},
				},
				Name: "join_test_fn",
			},
			Init: &ast.FunctionExpression{
				Arrow: nil,
				BaseNode: ast.BaseNode{
					Comments: nil,
					Errors:   nil,
					Loc: &ast.SourceLocation{
						End: ast.Position{
							Column: 2,
							Line:   105,
						},
						File:   "join_test.flux",
						Source: "(table=<-) => {\n    a =\n        table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"a\")\n            |> drop(columns: [\"_field\"])\n            |> rename(columns: {_value: \"value_a\"})\n    b =\n        table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"b\")\n            |> drop(columns: [\"_field\"])\n            |> rename(columns: {_value: \"value_b\"})\n\n    return promql.join(left: a, right: b, fn: (left, right) => ({left with value_b: right.value_b}))\n}",
						Start: ast.Position{
							Column: 16,
							Line:   90,
						},
					},
				},
				Body: &ast.Block{
					BaseNode: ast.BaseNode{
						Comments: nil,
						Errors:   nil,
						Loc: &ast.SourceLocation{
							End: ast.Position{
								Column: 2,
								Line:   105,
							},
							File:   "join_test.flux",
							Source: "{\n    a =\n        table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"a\")\n            |> drop(columns: [\"_field\"])\n            |> rename(columns: {_value: \"value_a\"})\n    b =\n        table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"b\")\n            |> drop(columns: [\"_field\"])\n            |> rename(columns: {_value: \"value_b\"})\n\n    return promql.join(left: a, right: b, fn: (left, right) => ({left with value_b: right.value_b}))\n}",
							Start: ast.Position{
								Column: 30,
								Line:   90,
							},
						},
					},
					Body: []ast.Statement{&ast.VariableAssignment{
						BaseNode: ast.BaseNode{
							Comments: nil,
							Errors:   nil,
							Loc: &ast.SourceLocation{
								End: ast.Position{
									Column: 52,
									Line:   96,
								},
								File:   "join_test.flux",
								Source: "a =\n        table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"a\")\n            |> drop(columns: [\"_field\"])\n            |> rename(columns: {_value: \"value_a\"})",
								Start: ast.Position{
									Column: 5,
									Line:   91,
								},
							},
						},
						ID: &ast.Identifier{
							BaseNode: ast.BaseNode{
								Comments: nil,
								Errors:   nil,
								Loc: &ast.SourceLocation{
									End: ast.Position{
										Column: 6,
										Line:   91,
									},
									File:   "join_test.flux",
									Source: "a",
									Start: ast.Position{
										Column: 5,
										Line:   91,
									},
								},
							},
							Name: "a",
						},
						Init: &ast.PipeExpression{
							Argument: &ast.PipeExpression{
								Argument: &ast.PipeExpression{
									Argument: &ast.PipeExpression{
										Argument: &ast.Identifier{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 14,
														Line:   92,
													},
													File:   "join_test.flux",
													Source: "table",
													Start: ast.Position{
														Column: 9,
														Line:   92,
													},
												},
											},
											Name: "table",
										},
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 78,
													Line:   93,
												},
												File:   "join_test.flux",
												Source: "table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)",
												Start: ast.Position{
													Column: 9,
													Line:   92,
												},
											},
										},
										Call: &ast.CallExpression{
											Arguments: []ast.Expression{&ast.ObjectExpression{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 77,
															Line:   93,
														},
														File:   "join_test.flux",
														Source: "start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z",
														Start: ast.Position{
															Column: 22,
															Line:   93,
														},
													},
												},
												Lbrace: nil,
												Properties: []*ast.Property{&ast.Property{
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 49,
																Line:   93,
															},
															File:   "join_test.flux",
															Source: "start: 2018-12-19T00:00:00Z",
															Start: ast.Position{
																Column: 22,
																Line:   93,
															},
														},
													},
													Comma: nil,
													Key: &ast.Identifier{
														BaseNode: ast.BaseNode{
															Comments: nil,
															Errors:   nil,
															Loc: &ast.SourceLocation{
																End: ast.Position{
																	Column: 27,
																	Line:   93,
																},
																File:   "join_test.flux",
																Source: "start",
																Start: ast.Position{
																	Column: 22,
																	Line:   93,
																},
															},
														},
														Name: "start",
													},
													Separator: nil,
													Value: &ast.DateTimeLiteral{
														BaseNode: ast.BaseNode{
															Comments: nil,
															Errors:   nil,
															Loc: &ast.SourceLocation{
																End: ast.Position{
																	Column: 49,
																	Line:   93,
																},
																File:   "join_test.flux",
																Source: "2018-12-19T00:00:00Z",
																Start: ast.Position{
																	Column: 29,
																	Line:   93,
																},
															},
														},
														Value: parser.MustParseTime("2018-12-19T00:00:00Z"),
													},
												}, &ast.Property{
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 77,
																Line:   93,
															},
															File:   "join_test.flux",
															Source: "stop: 2018-12-20T00:00:00Z",
															Start: ast.Position{
																Column: 51,
																Line:   93,
															},
														},
													},
													Comma: nil,
													Key: &ast.Identifier{
														BaseNode: ast.BaseNode{
															Comments: nil,
															Errors:   nil,
															Loc: &ast.SourceLocation{
																End: ast.Position{
																	Column: 55,
																	Line:   93,
																},
																File:   "join_test.flux",
																Source: "stop",
																Start: ast.Position{
																	Column: 51,
																	Line:   93,
																},
															},
														},
														Name: "stop",
													},
													Separator: nil,
													Value: &ast.DateTimeLiteral{
														BaseNode: ast.BaseNode{
															Comments: nil,
															Errors:   nil,
															Loc: &ast.SourceLocation{
																End: ast.Position{
																	Column: 77,
																	Line:   93,
																},
																File:   "join_test.flux",
																Source: "2018-12-20T00:00:00Z",
																Start: ast.Position{
																	Column: 57,
																	Line:   93,
																},
															},
														},
														Value: parser.MustParseTime("2018-12-20T00:00:00Z"),
													},
												}},
												Rbrace: nil,
												With:   nil,
											}},
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 78,
														Line:   93,
													},
													File:   "join_test.flux",
													Source: "range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)",
													Start: ast.Position{
														Column: 16,
														Line:   93,
													},
												},
											},
											Callee: &ast.Identifier{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 21,
															Line:   93,
														},
														File:   "join_test.flux",
														Source: "range",
														Start: ast.Position{
															Column: 16,
															Line:   93,
														},
													},
												},
												Name: "range",
											},
											Lparen: nil,
											Rparen: nil,
										},
									},
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 50,
												Line:   94,
											},
											File:   "join_test.flux",
											Source: "table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"a\")",
											Start: ast.Position{
												Column: 9,
												Line:   92,
											},
										},
									},
									Call: &ast.CallExpression{
										Arguments: []ast.Expression{&ast.ObjectExpression{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 49,
														Line:   94,
													},
													File:   "join_test.flux",
													Source: "fn: (r) => r._field == \"a\"",
													Start: ast.Position{
														Column: 23,
														Line:   94,
													},
												},
											},
											Lbrace: nil,
											Properties: []*ast.Property{&ast.Property{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 49,
															Line:   94,
														},
														File:   "join_test.flux",
														Source: "fn: (r) => r._field == \"a\"",
														Start: ast.Position{
															Column: 23,
															Line:   94,
														},
													},
												},
												Comma: nil,
												Key: &ast.Identifier{
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 25,
																Line:   94,
															},
															File:   "join_test.flux",
															Source: "fn",
															Start: ast.Position{
																Column: 23,
																Line:   94,
															},
														},
													},
													Name: "fn",
												},
												Separator: nil,
												Value: &ast.FunctionExpression{
													Arrow: nil,
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 49,
																Line:   94,
															},
															File:   "join_test.flux",
															Source: "(r) => r._field == \"a\"",
															Start: ast.Position{
																Column: 27,
																Line:   94,
															},
														},
													},
													Body: &ast.BinaryExpression{
														BaseNode: ast.BaseNode{
															Comments: nil,
															Errors:   nil,
															Loc: &ast.SourceLocation{
																End: ast.Position{
																	Column: 49,
																	Line:   94,
																},
																File:   "join_test.flux",
																Source: "r._field == \"a\"",
																Start: ast.Position{
																	Column: 34,
																	Line:   94,
																},
															},
														},
														Left: &ast.MemberExpression{
															BaseNode: ast.BaseNode{
																Comments: nil,
																Errors:   nil,
																Loc: &ast.SourceLocation{
																	End: ast.Position{
																		Column: 42,
																		Line:   94,
																	},
																	File:   "join_test.flux",
																	Source: "r._field",
																	Start: ast.Position{
																		Column: 34,
																		Line:   94,
																	},
																},
															},
															Lbrack: nil,
															Object: &ast.Identifier{
																BaseNode: ast.BaseNode{
																	Comments: nil,
																	Errors:   nil,
																	Loc: &ast.SourceLocation{
																		End: ast.Position{
																			Column: 35,
																			Line:   94,
																		},
																		File:   "join_test.flux",
																		Source: "r",
																		Start: ast.Position{
																			Column: 34,
																			Line:   94,
																		},
																	},
																},
																Name: "r",
															},
															Property: &ast.Identifier{
																BaseNode: ast.BaseNode{
																	Comments: nil,
																	Errors:   nil,
																	Loc: &ast.SourceLocation{
																		End: ast.Position{
																			Column: 42,
																			Line:   94,
																		},
																		File:   "join_test.flux",
																		Source: "_field",
																		Start: ast.Position{
																			Column: 36,
																			Line:   94,
																		},
																	},
																},
																Name: "_field",
															},
															Rbrack: nil,
														},
														Operator: 17,
														Right: &ast.StringLiteral{
															BaseNode: ast.BaseNode{
																Comments: nil,
																Errors:   nil,
																Loc: &ast.SourceLocation{
																	End: ast.Position{
																		Column: 49,
																		Line:   94,
																	},
																	File:   "join_test.flux",
																	Source: "\"a\"",
																	Start: ast.Position{
																		Column: 46,
																		Line:   94,
																	},
																},
															},
															Value: "a",
														},
													},
													Lparen: nil,
													Params: []*ast.Property{&ast.Property{
														BaseNode: ast.BaseNode{
															Comments: nil,
															Errors:   nil,
															Loc: &ast.SourceLocation{
																End: ast.Position{
																	Column: 29,
																	Line:   94,
																},
																File:   "join_test.flux",
																Source: "r",
																Start: ast.Position{
																	Column: 28,
																	Line:   94,
																},
															},
														},
														Comma: nil,
														Key: &ast.Identifier{
															BaseNode: ast.BaseNode{
																Comments: nil,
																Errors:   nil,
																Loc: &ast.SourceLocation{
																	End: ast.Position{
																		Column: 29,
																		Line:   94,
																	},
																	File:   "join_test.flux",
																	Source: "r",
																	Start: ast.Position{
																		Column: 28,
																		Line:   94,
																	},
																},
															},
															Name: "r",
														},
														Separator: nil,
														Value:     nil,
													}},
													Rparan: nil,
												},
											}},
											Rbrace: nil,
											With:   nil,
										}},
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 50,
													Line:   94,
												},
												File:   "join_test.flux",
												Source: "filter(fn: (r) => r._field == \"a\")",
												Start: ast.Position{
													Column: 16,
													Line:   94,
												},
											},
										},
										Callee: &ast.Identifier{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 22,
														Line:   94,
													},
													File:   "join_test.flux",
													Source: "filter",
													Start: ast.Position{
														Column: 16,
														Line:   94,
													},
												},
											},
											Name: "filter",
										},
										Lparen: nil,
										Rparen: nil,
									},
								},
								BaseNode: ast.BaseNode{
									Comments: nil,
									Errors:   nil,
									Loc: &ast.SourceLocation{
										End: ast.Position{
											Column: 41,
											Line:   95,
										},
										File:   "join_test.flux",
										Source: "table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"a\")\n            |> drop(columns: [\"_field\"])",
										Start: ast.Position{
											Column: 9,
											Line:   92,
										},
									},
								},
								Call: &ast.CallExpression{
									Arguments: []ast.Expression{&ast.ObjectExpression{
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 40,
													Line:   95,
												},
												File:   "join_test.flux",
												Source: "columns: [\"_field\"]",
												Start: ast.Position{
													Column: 21,
													Line:   95,
												},
											},
										},
										Lbrace: nil,
										Properties: []*ast.Property{&ast.Property{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 40,
														Line:   95,
													},
													File:   "join_test.flux",
													Source: "columns: [\"_field\"]",
													Start: ast.Position{
														Column: 21,
														Line:   95,
													},
												},
											},
											Comma: nil,
											Key: &ast.Identifier{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 28,
															Line:   95,
														},
														File:   "join_test.flux",
														Source: "columns",
														Start: ast.Position{
															Column: 21,
															Line:   95,
														},
													},
												},
												Name: "columns",
											},
											Separator: nil,
											Value: &ast.ArrayExpression{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 40,
															Line:   95,
														},
														File:   "join_test.flux",
														Source: "[\"_field\"]",
														Start: ast.Position{
															Column: 30,
															Line:   95,
														},
													},
												},
												Elements: []ast.Expression{&ast.StringLiteral{
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 39,
																Line:   95,
															},
															File:   "join_test.flux",
															Source: "\"_field\"",
															Start: ast.Position{
																Column: 31,
																Line:   95,
															},
														},
													},
													Value: "_field",
												}},
												Lbrack: nil,
												Rbrack: nil,
											},
										}},
										Rbrace: nil,
										With:   nil,
									}},
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 41,
												Line:   95,
											},
											File:   "join_test.flux",
											Source: "drop(columns: [\"_field\"])",
											Start: ast.Position{
												Column: 16,
												Line:   95,
											},
										},
									},
									Callee: &ast.Identifier{
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 20,
													Line:   95,
												},
												File:   "join_test.flux",
												Source: "drop",
												Start: ast.Position{
													Column: 16,
													Line:   95,
												},
											},
										},
										Name: "drop",
									},
									Lparen: nil,
									Rparen: nil,
								},
							},
							BaseNode: ast.BaseNode{
								Comments: nil,
								Errors:   nil,
								Loc: &ast.SourceLocation{
									End: ast.Position{
										Column: 52,
										Line:   96,
									},
									File:   "join_test.flux",
									Source: "table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"a\")\n            |> drop(columns: [\"_field\"])\n            |> rename(columns: {_value: \"value_a\"})",
									Start: ast.Position{
										Column: 9,
										Line:   92,
									},
								},
							},
							Call: &ast.CallExpression{
								Arguments: []ast.Expression{&ast.ObjectExpression{
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 51,
												Line:   96,
											},
											File:   "join_test.flux",
											Source: "columns: {_value: \"value_a\"}",
											Start: ast.Position{
												Column: 23,
												Line:   96,
											},
										},
									},
									Lbrace: nil,
									Properties: []*ast.Property{&ast.Property{
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 51,
													Line:   96,
												},
												File:   "join_test.flux",
												Source: "columns: {_value: \"value_a\"}",
												Start: ast.Position{
													Column: 23,
													Line:   96,
												},
											},
										},
										Comma: nil,
										Key: &ast.Identifier{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 30,
														Line:   96,
													},
													File:   "join_test.flux",
													Source: "columns",
													Start: ast.Position{
														Column: 23,
														Line:   96,
													},
												},
											},
											Name: "columns",
										},
										Separator: nil,
										Value: &ast.ObjectExpression{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 51,
														Line:   96,
													},
													File:   "join_test.flux",
													Source: "{_value: \"value_a\"}",
													Start: ast.Position{
														Column: 32,
														Line:   96,
													},
												},
											},
											Lbrace: nil,
											Properties: []*ast.Property{&ast.Property{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 50,
															Line:   96,
														},
														File:   "join_test.flux",
														Source: "_value: \"value_a\"",
														Start: ast.Position{
															Column: 33,
															Line:   96,
														},
													},
												},
												Comma: nil,
												Key: &ast.Identifier{
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 39,
																Line:   96,
															},
															File:   "join_test.flux",
															Source: "_value",
															Start: ast.Position{
																Column: 33,
																Line:   96,
															},
														},
													},
													Name: "_value",
												},
												Separator: nil,
												Value: &ast.StringLiteral{
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 50,
																Line:   96,
															},
															File:   "join_test.flux",
															Source: "\"value_a\"",
															Start: ast.Position{
																Column: 41,
																Line:   96,
															},
														},
													},
													Value: "value_a",
												},
											}},
											Rbrace: nil,
											With:   nil,
										},
									}},
									Rbrace: nil,
									With:   nil,
								}},
								BaseNode: ast.BaseNode{
									Comments: nil,
									Errors:   nil,
									Loc: &ast.SourceLocation{
										End: ast.Position{
											Column: 52,
											Line:   96,
										},
										File:   "join_test.flux",
										Source: "rename(columns: {_value: \"value_a\"})",
										Start: ast.Position{
											Column: 16,
											Line:   96,
										},
									},
								},
								Callee: &ast.Identifier{
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 22,
												Line:   96,
											},
											File:   "join_test.flux",
											Source: "rename",
											Start: ast.Position{
												Column: 16,
												Line:   96,
											},
										},
									},
									Name: "rename",
								},
								Lparen: nil,
								Rparen: nil,
							},
						},
					}, &ast.VariableAssignment{
						BaseNode: ast.BaseNode{
							Comments: nil,
							Errors:   nil,
							Loc: &ast.SourceLocation{
								End: ast.Position{
									Column: 52,
									Line:   102,
								},
								File:   "join_test.flux",
								Source: "b =\n        table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"b\")\n            |> drop(columns: [\"_field\"])\n            |> rename(columns: {_value: \"value_b\"})",
								Start: ast.Position{
									Column: 5,
									Line:   97,
								},
							},
						},
						ID: &ast.Identifier{
							BaseNode: ast.BaseNode{
								Comments: nil,
								Errors:   nil,
								Loc: &ast.SourceLocation{
									End: ast.Position{
										Column: 6,
										Line:   97,
									},
									File:   "join_test.flux",
									Source: "b",
									Start: ast.Position{
										Column: 5,
										Line:   97,
									},
								},
							},
							Name: "b",
						},
						Init: &ast.PipeExpression{
							Argument: &ast.PipeExpression{
								Argument: &ast.PipeExpression{
									Argument: &ast.PipeExpression{
										Argument: &ast.Identifier{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 14,
														Line:   98,
													},
													File:   "join_test.flux",
													Source: "table",
													Start: ast.Position{
														Column: 9,
														Line:   98,
													},
												},
											},
											Name: "table",
										},
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 78,
													Line:   99,
												},
												File:   "join_test.flux",
												Source: "table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)",
												Start: ast.Position{
													Column: 9,
													Line:   98,
												},
											},
										},
										Call: &ast.CallExpression{
											Arguments: []ast.Expression{&ast.ObjectExpression{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 77,
															Line:   99,
														},
														File:   "join_test.flux",
														Source: "start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z",
														Start: ast.Position{
															Column: 22,
															Line:   99,
														},
													},
												},
												Lbrace: nil,
												Properties: []*ast.Property{&ast.Property{
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 49,
																Line:   99,
															},
															File:   "join_test.flux",
															Source: "start: 2018-12-19T00:00:00Z",
															Start: ast.Position{
																Column: 22,
																Line:   99,
															},
														},
													},
													Comma: nil,
													Key: &ast.Identifier{
														BaseNode: ast.BaseNode{
															Comments: nil,
															Errors:   nil,
															Loc: &ast.SourceLocation{
																End: ast.Position{
																	Column: 27,
																	Line:   99,
																},
																File:   "join_test.flux",
																Source: "start",
																Start: ast.Position{
																	Column: 22,
																	Line:   99,
																},
															},
														},
														Name: "start",
													},
													Separator: nil,
													Value: &ast.DateTimeLiteral{
														BaseNode: ast.BaseNode{
															Comments: nil,
															Errors:   nil,
															Loc: &ast.SourceLocation{
																End: ast.Position{
																	Column: 49,
																	Line:   99,
																},
																File:   "join_test.flux",
																Source: "2018-12-19T00:00:00Z",
																Start: ast.Position{
																	Column: 29,
																	Line:   99,
																},
															},
														},
														Value: parser.MustParseTime("2018-12-19T00:00:00Z"),
													},
												}, &ast.Property{
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 77,
																Line:   99,
															},
															File:   "join_test.flux",
															Source: "stop: 2018-12-20T00:00:00Z",
															Start: ast.Position{
																Column: 51,
																Line:   99,
															},
														},
													},
													Comma: nil,
													Key: &ast.Identifier{
														BaseNode: ast.BaseNode{
															Comments: nil,
															Errors:   nil,
															Loc: &ast.SourceLocation{
																End: ast.Position{
																	Column: 55,
																	Line:   99,
																},
																File:   "join_test.flux",
																Source: "stop",
																Start: ast.Position{
																	Column: 51,
																	Line:   99,
																},
															},
														},
														Name: "stop",
													},
													Separator: nil,
													Value: &ast.DateTimeLiteral{
														BaseNode: ast.BaseNode{
															Comments: nil,
															Errors:   nil,
															Loc: &ast.SourceLocation{
																End: ast.Position{
																	Column: 77,
																	Line:   99,
																},
																File:   "join_test.flux",
																Source: "2018-12-20T00:00:00Z",
																Start: ast.Position{
																	Column: 57,
																	Line:   99,
																},
															},
														},
														Value: parser.MustParseTime("2018-12-20T00:00:00Z"),
													},
												}},
												Rbrace: nil,
												With:   nil,
											}},
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 78,
														Line:   99,
													},
													File:   "join_test.flux",
													Source: "range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)",
													Start: ast.Position{
														Column: 16,
														Line:   99,
													},
												},
											},
											Callee: &ast.Identifier{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 21,
															Line:   99,
														},
														File:   "join_test.flux",
														Source: "range",
														Start: ast.Position{
															Column: 16,
															Line:   99,
														},
													},
												},
												Name: "range",
											},
											Lparen: nil,
											Rparen: nil,
										},
									},
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 50,
												Line:   100,
											},
											File:   "join_test.flux",
											Source: "table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"b\")",
											Start: ast.Position{
												Column: 9,
												Line:   98,
											},
										},
									},
									Call: &ast.CallExpression{
										Arguments: []ast.Expression{&ast.ObjectExpression{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 49,
														Line:   100,
													},
													File:   "join_test.flux",
													Source: "fn: (r) => r._field == \"b\"",
													Start: ast.Position{
														Column: 23,
														Line:   100,
													},
												},
											},
											Lbrace: nil,
											Properties: []*ast.Property{&ast.Property{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 49,
															Line:   100,
														},
														File:   "join_test.flux",
														Source: "fn: (r) => r._field == \"b\"",
														Start: ast.Position{
															Column: 23,
															Line:   100,
														},
													},
												},
												Comma: nil,
												Key: &ast.Identifier{
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 25,
																Line:   100,
															},
															File:   "join_test.flux",
															Source: "fn",
															Start: ast.Position{
																Column: 23,
																Line:   100,
															},
														},
													},
													Name: "fn",
												},
												Separator: nil,
												Value: &ast.FunctionExpression{
													Arrow: nil,
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 49,
																Line:   100,
															},
															File:   "join_test.flux",
															Source: "(r) => r._field == \"b\"",
															Start: ast.Position{
																Column: 27,
																Line:   100,
															},
														},
													},
													Body: &ast.BinaryExpression{
														BaseNode: ast.BaseNode{
															Comments: nil,
															Errors:   nil,
															Loc: &ast.SourceLocation{
																End: ast.Position{
																	Column: 49,
																	Line:   100,
																},
																File:   "join_test.flux",
																Source: "r._field == \"b\"",
																Start: ast.Position{
																	Column: 34,
																	Line:   100,
																},
															},
														},
														Left: &ast.MemberExpression{
															BaseNode: ast.BaseNode{
																Comments: nil,
																Errors:   nil,
																Loc: &ast.SourceLocation{
																	End: ast.Position{
																		Column: 42,
																		Line:   100,
																	},
																	File:   "join_test.flux",
																	Source: "r._field",
																	Start: ast.Position{
																		Column: 34,
																		Line:   100,
																	},
																},
															},
															Lbrack: nil,
															Object: &ast.Identifier{
																BaseNode: ast.BaseNode{
																	Comments: nil,
																	Errors:   nil,
																	Loc: &ast.SourceLocation{
																		End: ast.Position{
																			Column: 35,
																			Line:   100,
																		},
																		File:   "join_test.flux",
																		Source: "r",
																		Start: ast.Position{
																			Column: 34,
																			Line:   100,
																		},
																	},
																},
																Name: "r",
															},
															Property: &ast.Identifier{
																BaseNode: ast.BaseNode{
																	Comments: nil,
																	Errors:   nil,
																	Loc: &ast.SourceLocation{
																		End: ast.Position{
																			Column: 42,
																			Line:   100,
																		},
																		File:   "join_test.flux",
																		Source: "_field",
																		Start: ast.Position{
																			Column: 36,
																			Line:   100,
																		},
																	},
																},
																Name: "_field",
															},
															Rbrack: nil,
														},
														Operator: 17,
														Right: &ast.StringLiteral{
															BaseNode: ast.BaseNode{
																Comments: nil,
																Errors:   nil,
																Loc: &ast.SourceLocation{
																	End: ast.Position{
																		Column: 49,
																		Line:   100,
																	},
																	File:   "join_test.flux",
																	Source: "\"b\"",
																	Start: ast.Position{
																		Column: 46,
																		Line:   100,
																	},
																},
															},
															Value: "b",
														},
													},
													Lparen: nil,
													Params: []*ast.Property{&ast.Property{
														BaseNode: ast.BaseNode{
															Comments: nil,
															Errors:   nil,
															Loc: &ast.SourceLocation{
																End: ast.Position{
																	Column: 29,
																	Line:   100,
																},
																File:   "join_test.flux",
																Source: "r",
																Start: ast.Position{
																	Column: 28,
																	Line:   100,
																},
															},
														},
														Comma: nil,
														Key: &ast.Identifier{
															BaseNode: ast.BaseNode{
																Comments: nil,
																Errors:   nil,
																Loc: &ast.SourceLocation{
																	End: ast.Position{
																		Column: 29,
																		Line:   100,
																	},
																	File:   "join_test.flux",
																	Source: "r",
																	Start: ast.Position{
																		Column: 28,
																		Line:   100,
																	},
																},
															},
															Name: "r",
														},
														Separator: nil,
														Value:     nil,
													}},
													Rparan: nil,
												},
											}},
											Rbrace: nil,
											With:   nil,
										}},
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 50,
													Line:   100,
												},
												File:   "join_test.flux",
												Source: "filter(fn: (r) => r._field == \"b\")",
												Start: ast.Position{
													Column: 16,
													Line:   100,
												},
											},
										},
										Callee: &ast.Identifier{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 22,
														Line:   100,
													},
													File:   "join_test.flux",
													Source: "filter",
													Start: ast.Position{
														Column: 16,
														Line:   100,
													},
												},
											},
											Name: "filter",
										},
										Lparen: nil,
										Rparen: nil,
									},
								},
								BaseNode: ast.BaseNode{
									Comments: nil,
									Errors:   nil,
									Loc: &ast.SourceLocation{
										End: ast.Position{
											Column: 41,
											Line:   101,
										},
										File:   "join_test.flux",
										Source: "table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"b\")\n            |> drop(columns: [\"_field\"])",
										Start: ast.Position{
											Column: 9,
											Line:   98,
										},
									},
								},
								Call: &ast.CallExpression{
									Arguments: []ast.Expression{&ast.ObjectExpression{
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 40,
													Line:   101,
												},
												File:   "join_test.flux",
												Source: "columns: [\"_field\"]",
												Start: ast.Position{
													Column: 21,
													Line:   101,
												},
											},
										},
										Lbrace: nil,
										Properties: []*ast.Property{&ast.Property{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 40,
														Line:   101,
													},
													File:   "join_test.flux",
													Source: "columns: [\"_field\"]",
													Start: ast.Position{
														Column: 21,
														Line:   101,
													},
												},
											},
											Comma: nil,
											Key: &ast.Identifier{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 28,
															Line:   101,
														},
														File:   "join_test.flux",
														Source: "columns",
														Start: ast.Position{
															Column: 21,
															Line:   101,
														},
													},
												},
												Name: "columns",
											},
											Separator: nil,
											Value: &ast.ArrayExpression{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 40,
															Line:   101,
														},
														File:   "join_test.flux",
														Source: "[\"_field\"]",
														Start: ast.Position{
															Column: 30,
															Line:   101,
														},
													},
												},
												Elements: []ast.Expression{&ast.StringLiteral{
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 39,
																Line:   101,
															},
															File:   "join_test.flux",
															Source: "\"_field\"",
															Start: ast.Position{
																Column: 31,
																Line:   101,
															},
														},
													},
													Value: "_field",
												}},
												Lbrack: nil,
												Rbrack: nil,
											},
										}},
										Rbrace: nil,
										With:   nil,
									}},
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 41,
												Line:   101,
											},
											File:   "join_test.flux",
											Source: "drop(columns: [\"_field\"])",
											Start: ast.Position{
												Column: 16,
												Line:   101,
											},
										},
									},
									Callee: &ast.Identifier{
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 20,
													Line:   101,
												},
												File:   "join_test.flux",
												Source: "drop",
												Start: ast.Position{
													Column: 16,
													Line:   101,
												},
											},
										},
										Name: "drop",
									},
									Lparen: nil,
									Rparen: nil,
								},
							},
							BaseNode: ast.BaseNode{
								Comments: nil,
								Errors:   nil,
								Loc: &ast.SourceLocation{
									End: ast.Position{
										Column: 52,
										Line:   102,
									},
									File:   "join_test.flux",
									Source: "table\n            |> range(start: 2018-12-19T00:00:00Z, stop: 2018-12-20T00:00:00Z)\n            |> filter(fn: (r) => r._field == \"b\")\n            |> drop(columns: [\"_field\"])\n            |> rename(columns: {_value: \"value_b\"})",
									Start: ast.Position{
										Column: 9,
										Line:   98,
									},
								},
							},
							Call: &ast.CallExpression{
								Arguments: []ast.Expression{&ast.ObjectExpression{
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 51,
												Line:   102,
											},
											File:   "join_test.flux",
											Source: "columns: {_value: \"value_b\"}",
											Start: ast.Position{
												Column: 23,
												Line:   102,
											},
										},
									},
									Lbrace: nil,
									Properties: []*ast.Property{&ast.Property{
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 51,
													Line:   102,
												},
												File:   "join_test.flux",
												Source: "columns: {_value: \"value_b\"}",
												Start: ast.Position{
													Column: 23,
													Line:   102,
												},
											},
										},
										Comma: nil,
										Key: &ast.Identifier{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 30,
														Line:   102,
													},
													File:   "join_test.flux",
													Source: "columns",
													Start: ast.Position{
														Column: 23,
														Line:   102,
													},
												},
											},
											Name: "columns",
										},
										Separator: nil,
										Value: &ast.ObjectExpression{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 51,
														Line:   102,
													},
													File:   "join_test.flux",
													Source: "{_value: \"value_b\"}",
													Start: ast.Position{
														Column: 32,
														Line:   102,
													},
												},
											},
											Lbrace: nil,
											Properties: []*ast.Property{&ast.Property{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 50,
															Line:   102,
														},
														File:   "join_test.flux",
														Source: "_value: \"value_b\"",
														Start: ast.Position{
															Column: 33,
															Line:   102,
														},
													},
												},
												Comma: nil,
												Key: &ast.Identifier{
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 39,
																Line:   102,
															},
															File:   "join_test.flux",
															Source: "_value",
															Start: ast.Position{
																Column: 33,
																Line:   102,
															},
														},
													},
													Name: "_value",
												},
												Separator: nil,
												Value: &ast.StringLiteral{
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 50,
																Line:   102,
															},
															File:   "join_test.flux",
															Source: "\"value_b\"",
															Start: ast.Position{
																Column: 41,
																Line:   102,
															},
														},
													},
													Value: "value_b",
												},
											}},
											Rbrace: nil,
											With:   nil,
										},
									}},
									Rbrace: nil,
									With:   nil,
								}},
								BaseNode: ast.BaseNode{
									Comments: nil,
									Errors:   nil,
									Loc: &ast.SourceLocation{
										End: ast.Position{
											Column: 52,
											Line:   102,
										},
										File:   "join_test.flux",
										Source: "rename(columns: {_value: \"value_b\"})",
										Start: ast.Position{
											Column: 16,
											Line:   102,
										},
									},
								},
								Callee: &ast.Identifier{
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 22,
												Line:   102,
											},
											File:   "join_test.flux",
											Source: "rename",
											Start: ast.Position{
												Column: 16,
												Line:   102,
											},
										},
									},
									Name: "rename",
								},
								Lparen: nil,
								Rparen: nil,
							},
						},
					}, &ast.ReturnStatement{
						Argument: &ast.CallExpression{
							Arguments: []ast.Expression{&ast.ObjectExpression{
								BaseNode: ast.BaseNode{
									Comments: nil,
									Errors:   nil,
									Loc: &ast.SourceLocation{
										End: ast.Position{
											Column: 100,
											Line:   104,
										},
										File:   "join_test.flux",
										Source: "left: a, right: b, fn: (left, right) => ({left with value_b: right.value_b})",
										Start: ast.Position{
											Column: 24,
											Line:   104,
										},
									},
								},
								Lbrace: nil,
								Properties: []*ast.Property{&ast.Property{
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 31,
												Line:   104,
											},
											File:   "join_test.flux",
											Source: "left: a",
											Start: ast.Position{
												Column: 24,
												Line:   104,
											},
										},
									},
									Comma: nil,
									Key: &ast.Identifier{
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 28,
													Line:   104,
												},
												File:   "join_test.flux",
												Source: "left",
												Start: ast.Position{
													Column: 24,
													Line:   104,
												},
											},
										},
										Name: "left",
									},
									Separator: nil,
									Value: &ast.Identifier{
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 31,
													Line:   104,
												},
												File:   "join_test.flux",
												Source: "a",
												Start: ast.Position{
													Column: 30,
													Line:   104,
												},
											},
										},
										Name: "a",
									},
								}, &ast.Property{
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 41,
												Line:   104,
											},
											File:   "join_test.flux",
											Source: "right: b",
											Start: ast.Position{
												Column: 33,
												Line:   104,
											},
										},
									},
									Comma: nil,
									Key: &ast.Identifier{
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 38,
													Line:   104,
												},
												File:   "join_test.flux",
												Source: "right",
												Start: ast.Position{
													Column: 33,
													Line:   104,
												},
											},
										},
										Name: "right",
									},
									Separator: nil,
									Value: &ast.Identifier{
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 41,
													Line:   104,
												},
												File:   "join_test.flux",
												Source: "b",
												Start: ast.Position{
													Column: 40,
													Line:   104,
												},
											},
										},
										Name: "b",
									},
								}, &ast.Property{
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 100,
												Line:   104,
											},
											File:   "join_test.flux",
											Source: "fn: (left, right) => ({left with value_b: right.value_b})",
											Start: ast.Position{
												Column: 43,
												Line:   104,
											},
										},
									},
									Comma: nil,
									Key: &ast.Identifier{
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 45,
													Line:   104,
												},
												File:   "join_test.flux",
												Source: "fn",
												Start: ast.Position{
													Column: 43,
													Line:   104,
												},
											},
										},
										Name: "fn",
									},
									Separator: nil,
									Value: &ast.FunctionExpression{
										Arrow: nil,
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 100,
													Line:   104,
												},
												File:   "join_test.flux",
												Source: "(left, right) => ({left with value_b: right.value_b})",
												Start: ast.Position{
													Column: 47,
													Line:   104,
												},
											},
										},
										Body: &ast.ParenExpression{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 100,
														Line:   104,
													},
													File:   "join_test.flux",
													Source: "({left with value_b: right.value_b})",
													Start: ast.Position{
														Column: 64,
														Line:   104,
													},
												},
											},
											Expression: &ast.ObjectExpression{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 99,
															Line:   104,
														},
														File:   "join_test.flux",
														Source: "{left with value_b: right.value_b}",
														Start: ast.Position{
															Column: 65,
															Line:   104,
														},
													},
												},
												Lbrace: nil,
												Properties: []*ast.Property{&ast.Property{
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 98,
																Line:   104,
															},
															File:   "join_test.flux",
															Source: "value_b: right.value_b",
															Start: ast.Position{
																Column: 76,
																Line:   104,
															},
														},
													},
													Comma: nil,
													Key: &ast.Identifier{
														BaseNode: ast.BaseNode{
															Comments: nil,
															Errors:   nil,
															Loc: &ast.SourceLocation{
																End: ast.Position{
																	Column: 83,
																	Line:   104,
																},
																File:   "join_test.flux",
																Source: "value_b",
																Start: ast.Position{
																	Column: 76,
																	Line:   104,
																},
															},
														},
														Name: "value_b",
													},
													Separator: nil,
													Value: &ast.MemberExpression{
														BaseNode: ast.BaseNode{
															Comments: nil,
															Errors:   nil,
															Loc: &ast.SourceLocation{
																End: ast.Position{
																	Column: 98,
																	Line:   104,
																},
																File:   "join_test.flux",
																Source: "right.value_b",
																Start: ast.Position{
																	Column: 85,
																	Line:   104,
																},
															},
														},
														Lbrack: nil,
														Object: &ast.Identifier{
															BaseNode: ast.BaseNode{
																Comments: nil,
																Errors:   nil,
																Loc: &ast.SourceLocation{
																	End: ast.Position{
																		Column: 90,
																		Line:   104,
																	},
																	File:   "join_test.flux",
																	Source: "right",
																	Start: ast.Position{
																		Column: 85,
																		Line:   104,
																	},
																},
															},
															Name: "right",
														},
														Property: &ast.Identifier{
															BaseNode: ast.BaseNode{
																Comments: nil,
																Errors:   nil,
																Loc: &ast.SourceLocation{
																	End: ast.Position{
																		Column: 98,
																		Line:   104,
																	},
																	File:   "join_test.flux",
																	Source: "value_b",
																	Start: ast.Position{
																		Column: 91,
																		Line:   104,
																	},
																},
															},
															Name: "value_b",
														},
														Rbrack: nil,
													},
												}},
												Rbrace: nil,
												With: &ast.Identifier{
													BaseNode: ast.BaseNode{
														Comments: nil,
														Errors:   nil,
														Loc: &ast.SourceLocation{
															End: ast.Position{
																Column: 70,
																Line:   104,
															},
															File:   "join_test.flux",
															Source: "left",
															Start: ast.Position{
																Column: 66,
																Line:   104,
															},
														},
													},
													Name: "left",
												},
											},
											Lparen: nil,
											Rparen: nil,
										},
										Lparen: nil,
										Params: []*ast.Property{&ast.Property{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 52,
														Line:   104,
													},
													File:   "join_test.flux",
													Source: "left",
													Start: ast.Position{
														Column: 48,
														Line:   104,
													},
												},
											},
											Comma: nil,
											Key: &ast.Identifier{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 52,
															Line:   104,
														},
														File:   "join_test.flux",
														Source: "left",
														Start: ast.Position{
															Column: 48,
															Line:   104,
														},
													},
												},
												Name: "left",
											},
											Separator: nil,
											Value:     nil,
										}, &ast.Property{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 59,
														Line:   104,
													},
													File:   "join_test.flux",
													Source: "right",
													Start: ast.Position{
														Column: 54,
														Line:   104,
													},
												},
											},
											Comma: nil,
											Key: &ast.Identifier{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 59,
															Line:   104,
														},
														File:   "join_test.flux",
														Source: "right",
														Start: ast.Position{
															Column: 54,
															Line:   104,
														},
													},
												},
												Name: "right",
											},
											Separator: nil,
											Value:     nil,
										}},
										Rparan: nil,
									},
								}},
								Rbrace: nil,
								With:   nil,
							}},
							BaseNode: ast.BaseNode{
								Comments: nil,
								Errors:   nil,
								Loc: &ast.SourceLocation{
									End: ast.Position{
										Column: 101,
										Line:   104,
									},
									File:   "join_test.flux",
									Source: "promql.join(left: a, right: b, fn: (left, right) => ({left with value_b: right.value_b}))",
									Start: ast.Position{
										Column: 12,
										Line:   104,
									},
								},
							},
							Callee: &ast.MemberExpression{
								BaseNode: ast.BaseNode{
									Comments: nil,
									Errors:   nil,
									Loc: &ast.SourceLocation{
										End: ast.Position{
											Column: 23,
											Line:   104,
										},
										File:   "join_test.flux",
										Source: "promql.join",
										Start: ast.Position{
											Column: 12,
											Line:   104,
										},
									},
								},
								Lbrack: nil,
								Object: &ast.Identifier{
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 18,
												Line:   104,
											},
											File:   "join_test.flux",
											Source: "promql",
											Start: ast.Position{
												Column: 12,
												Line:   104,
											},
										},
									},
									Name: "promql",
								},
								Property: &ast.Identifier{
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 23,
												Line:   104,
											},
											File:   "join_test.flux",
											Source: "join",
											Start: ast.Position{
												Column: 19,
												Line:   104,
											},
										},
									},
									Name: "join",
								},
								Rbrack: nil,
							},
							Lparen: nil,
							Rparen: nil,
						},
						BaseNode: ast.BaseNode{
							Comments: nil,
							Errors:   nil,
							Loc: &ast.SourceLocation{
								End: ast.Position{
									Column: 101,
									Line:   104,
								},
								File:   "join_test.flux",
								Source: "return promql.join(left: a, right: b, fn: (left, right) => ({left with value_b: right.value_b}))",
								Start: ast.Position{
									Column: 5,
									Line:   104,
								},
							},
						},
					}},
					Lbrace: nil,
					Rbrace: nil,
				},
				Lparen: nil,
				Params: []*ast.Property{&ast.Property{
					BaseNode: ast.BaseNode{
						Comments: nil,
						Errors:   nil,
						Loc: &ast.SourceLocation{
							End: ast.Position{
								Column: 25,
								Line:   90,
							},
							File:   "join_test.flux",
							Source: "table=<-",
							Start: ast.Position{
								Column: 17,
								Line:   90,
							},
						},
					},
					Comma: nil,
					Key: &ast.Identifier{
						BaseNode: ast.BaseNode{
							Comments: nil,
							Errors:   nil,
							Loc: &ast.SourceLocation{
								End: ast.Position{
									Column: 22,
									Line:   90,
								},
								File:   "join_test.flux",
								Source: "table",
								Start: ast.Position{
									Column: 17,
									Line:   90,
								},
							},
						},
						Name: "table",
					},
					Separator: nil,
					Value: &ast.PipeLiteral{BaseNode: ast.BaseNode{
						Comments: nil,
						Errors:   nil,
						Loc: &ast.SourceLocation{
							End: ast.Position{
								Column: 25,
								Line:   90,
							},
							File:   "join_test.flux",
							Source: "<-",
							Start: ast.Position{
								Column: 23,
								Line:   90,
							},
						},
					}},
				}},
				Rparan: nil,
			},
		}, &ast.TestStatement{
			Assignment: &ast.VariableAssignment{
				BaseNode: ast.BaseNode{
					Comments: nil,
					Errors:   nil,
					Loc: &ast.SourceLocation{
						End: ast.Position{
							Column: 103,
							Line:   108,
						},
						File:   "join_test.flux",
						Source: "prom_join = () =>\n    ({input: testing.loadStorage(csv: inData), want: testing.loadMem(csv: outData), fn: join_test_fn})",
						Start: ast.Position{
							Column: 6,
							Line:   107,
						},
					},
				},
				ID: &ast.Identifier{
					BaseNode: ast.BaseNode{
						Comments: nil,
						Errors:   nil,
						Loc: &ast.SourceLocation{
							End: ast.Position{
								Column: 15,
								Line:   107,
							},
							File:   "join_test.flux",
							Source: "prom_join",
							Start: ast.Position{
								Column: 6,
								Line:   107,
							},
						},
					},
					Name: "prom_join",
				},
				Init: &ast.FunctionExpression{
					Arrow: nil,
					BaseNode: ast.BaseNode{
						Comments: nil,
						Errors:   nil,
						Loc: &ast.SourceLocation{
							End: ast.Position{
								Column: 103,
								Line:   108,
							},
							File:   "join_test.flux",
							Source: "() =>\n    ({input: testing.loadStorage(csv: inData), want: testing.loadMem(csv: outData), fn: join_test_fn})",
							Start: ast.Position{
								Column: 18,
								Line:   107,
							},
						},
					},
					Body: &ast.ParenExpression{
						BaseNode: ast.BaseNode{
							Comments: nil,
							Errors:   nil,
							Loc: &ast.SourceLocation{
								End: ast.Position{
									Column: 103,
									Line:   108,
								},
								File:   "join_test.flux",
								Source: "({input: testing.loadStorage(csv: inData), want: testing.loadMem(csv: outData), fn: join_test_fn})",
								Start: ast.Position{
									Column: 5,
									Line:   108,
								},
							},
						},
						Expression: &ast.ObjectExpression{
							BaseNode: ast.BaseNode{
								Comments: nil,
								Errors:   nil,
								Loc: &ast.SourceLocation{
									End: ast.Position{
										Column: 102,
										Line:   108,
									},
									File:   "join_test.flux",
									Source: "{input: testing.loadStorage(csv: inData), want: testing.loadMem(csv: outData), fn: join_test_fn}",
									Start: ast.Position{
										Column: 6,
										Line:   108,
									},
								},
							},
							Lbrace: nil,
							Properties: []*ast.Property{&ast.Property{
								BaseNode: ast.BaseNode{
									Comments: nil,
									Errors:   nil,
									Loc: &ast.SourceLocation{
										End: ast.Position{
											Column: 46,
											Line:   108,
										},
										File:   "join_test.flux",
										Source: "input: testing.loadStorage(csv: inData)",
										Start: ast.Position{
											Column: 7,
											Line:   108,
										},
									},
								},
								Comma: nil,
								Key: &ast.Identifier{
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 12,
												Line:   108,
											},
											File:   "join_test.flux",
											Source: "input",
											Start: ast.Position{
												Column: 7,
												Line:   108,
											},
										},
									},
									Name: "input",
								},
								Separator: nil,
								Value: &ast.CallExpression{
									Arguments: []ast.Expression{&ast.ObjectExpression{
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 45,
													Line:   108,
												},
												File:   "join_test.flux",
												Source: "csv: inData",
												Start: ast.Position{
													Column: 34,
													Line:   108,
												},
											},
										},
										Lbrace: nil,
										Properties: []*ast.Property{&ast.Property{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 45,
														Line:   108,
													},
													File:   "join_test.flux",
													Source: "csv: inData",
													Start: ast.Position{
														Column: 34,
														Line:   108,
													},
												},
											},
											Comma: nil,
											Key: &ast.Identifier{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 37,
															Line:   108,
														},
														File:   "join_test.flux",
														Source: "csv",
														Start: ast.Position{
															Column: 34,
															Line:   108,
														},
													},
												},
												Name: "csv",
											},
											Separator: nil,
											Value: &ast.Identifier{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 45,
															Line:   108,
														},
														File:   "join_test.flux",
														Source: "inData",
														Start: ast.Position{
															Column: 39,
															Line:   108,
														},
													},
												},
												Name: "inData",
											},
										}},
										Rbrace: nil,
										With:   nil,
									}},
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 46,
												Line:   108,
											},
											File:   "join_test.flux",
											Source: "testing.loadStorage(csv: inData)",
											Start: ast.Position{
												Column: 14,
												Line:   108,
											},
										},
									},
									Callee: &ast.MemberExpression{
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 33,
													Line:   108,
												},
												File:   "join_test.flux",
												Source: "testing.loadStorage",
												Start: ast.Position{
													Column: 14,
													Line:   108,
												},
											},
										},
										Lbrack: nil,
										Object: &ast.Identifier{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 21,
														Line:   108,
													},
													File:   "join_test.flux",
													Source: "testing",
													Start: ast.Position{
														Column: 14,
														Line:   108,
													},
												},
											},
											Name: "testing",
										},
										Property: &ast.Identifier{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 33,
														Line:   108,
													},
													File:   "join_test.flux",
													Source: "loadStorage",
													Start: ast.Position{
														Column: 22,
														Line:   108,
													},
												},
											},
											Name: "loadStorage",
										},
										Rbrack: nil,
									},
									Lparen: nil,
									Rparen: nil,
								},
							}, &ast.Property{
								BaseNode: ast.BaseNode{
									Comments: nil,
									Errors:   nil,
									Loc: &ast.SourceLocation{
										End: ast.Position{
											Column: 83,
											Line:   108,
										},
										File:   "join_test.flux",
										Source: "want: testing.loadMem(csv: outData)",
										Start: ast.Position{
											Column: 48,
											Line:   108,
										},
									},
								},
								Comma: nil,
								Key: &ast.Identifier{
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 52,
												Line:   108,
											},
											File:   "join_test.flux",
											Source: "want",
											Start: ast.Position{
												Column: 48,
												Line:   108,
											},
										},
									},
									Name: "want",
								},
								Separator: nil,
								Value: &ast.CallExpression{
									Arguments: []ast.Expression{&ast.ObjectExpression{
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 82,
													Line:   108,
												},
												File:   "join_test.flux",
												Source: "csv: outData",
												Start: ast.Position{
													Column: 70,
													Line:   108,
												},
											},
										},
										Lbrace: nil,
										Properties: []*ast.Property{&ast.Property{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 82,
														Line:   108,
													},
													File:   "join_test.flux",
													Source: "csv: outData",
													Start: ast.Position{
														Column: 70,
														Line:   108,
													},
												},
											},
											Comma: nil,
											Key: &ast.Identifier{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 73,
															Line:   108,
														},
														File:   "join_test.flux",
														Source: "csv",
														Start: ast.Position{
															Column: 70,
															Line:   108,
														},
													},
												},
												Name: "csv",
											},
											Separator: nil,
											Value: &ast.Identifier{
												BaseNode: ast.BaseNode{
													Comments: nil,
													Errors:   nil,
													Loc: &ast.SourceLocation{
														End: ast.Position{
															Column: 82,
															Line:   108,
														},
														File:   "join_test.flux",
														Source: "outData",
														Start: ast.Position{
															Column: 75,
															Line:   108,
														},
													},
												},
												Name: "outData",
											},
										}},
										Rbrace: nil,
										With:   nil,
									}},
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 83,
												Line:   108,
											},
											File:   "join_test.flux",
											Source: "testing.loadMem(csv: outData)",
											Start: ast.Position{
												Column: 54,
												Line:   108,
											},
										},
									},
									Callee: &ast.MemberExpression{
										BaseNode: ast.BaseNode{
											Comments: nil,
											Errors:   nil,
											Loc: &ast.SourceLocation{
												End: ast.Position{
													Column: 69,
													Line:   108,
												},
												File:   "join_test.flux",
												Source: "testing.loadMem",
												Start: ast.Position{
													Column: 54,
													Line:   108,
												},
											},
										},
										Lbrack: nil,
										Object: &ast.Identifier{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 61,
														Line:   108,
													},
													File:   "join_test.flux",
													Source: "testing",
													Start: ast.Position{
														Column: 54,
														Line:   108,
													},
												},
											},
											Name: "testing",
										},
										Property: &ast.Identifier{
											BaseNode: ast.BaseNode{
												Comments: nil,
												Errors:   nil,
												Loc: &ast.SourceLocation{
													End: ast.Position{
														Column: 69,
														Line:   108,
													},
													File:   "join_test.flux",
													Source: "loadMem",
													Start: ast.Position{
														Column: 62,
														Line:   108,
													},
												},
											},
											Name: "loadMem",
										},
										Rbrack: nil,
									},
									Lparen: nil,
									Rparen: nil,
								},
							}, &ast.Property{
								BaseNode: ast.BaseNode{
									Comments: nil,
									Errors:   nil,
									Loc: &ast.SourceLocation{
										End: ast.Position{
											Column: 101,
											Line:   108,
										},
										File:   "join_test.flux",
										Source: "fn: join_test_fn",
										Start: ast.Position{
											Column: 85,
											Line:   108,
										},
									},
								},
								Comma: nil,
								Key: &ast.Identifier{
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 87,
												Line:   108,
											},
											File:   "join_test.flux",
											Source: "fn",
											Start: ast.Position{
												Column: 85,
												Line:   108,
											},
										},
									},
									Name: "fn",
								},
								Separator: nil,
								Value: &ast.Identifier{
									BaseNode: ast.BaseNode{
										Comments: nil,
										Errors:   nil,
										Loc: &ast.SourceLocation{
											End: ast.Position{
												Column: 101,
												Line:   108,
											},
											File:   "join_test.flux",
											Source: "join_test_fn",
											Start: ast.Position{
												Column: 89,
												Line:   108,
											},
										},
									},
									Name: "join_test_fn",
								},
							}},
							Rbrace: nil,
							With:   nil,
						},
						Lparen: nil,
						Rparen: nil,
					},
					Lparen: nil,
					Params: []*ast.Property{},
					Rparan: nil,
				},
			},
			BaseNode: ast.BaseNode{
				Comments: nil,
				Errors:   nil,
				Loc: &ast.SourceLocation{
					End: ast.Position{
						Column: 103,
						Line:   108,
					},
					File:   "join_test.flux",
					Source: "test prom_join = () =>\n    ({input: testing.loadStorage(csv: inData), want: testing.loadMem(csv: outData), fn: join_test_fn})",
					Start: ast.Position{
						Column: 1,
						Line:   107,
					},
				},
			},
		}},
		Eof: nil,
		Imports: []*ast.ImportDeclaration{&ast.ImportDeclaration{
			As: nil,
			BaseNode: ast.BaseNode{
				Comments: nil,
				Errors:   nil,
				Loc: &ast.SourceLocation{
					End: ast.Position{
						Column: 25,
						Line:   4,
					},
					File:   "join_test.flux",
					Source: "import \"internal/promql\"",
					Start: ast.Position{
						Column: 1,
						Line:   4,
					},
				},
			},
			Path: &ast.StringLiteral{
				BaseNode: ast.BaseNode{
					Comments: nil,
					Errors:   nil,
					Loc: &ast.SourceLocation{
						End: ast.Position{
							Column: 25,
							Line:   4,
						},
						File:   "join_test.flux",
						Source: "\"internal/promql\"",
						Start: ast.Position{
							Column: 8,
							Line:   4,
						},
					},
				},
				Value: "internal/promql",
			},
		}, &ast.ImportDeclaration{
			As: nil,
			BaseNode: ast.BaseNode{
				Comments: nil,
				Errors:   nil,
				Loc: &ast.SourceLocation{
					End: ast.Position{
						Column: 17,
						Line:   5,
					},
					File:   "join_test.flux",
					Source: "import \"testing\"",
					Start: ast.Position{
						Column: 1,
						Line:   5,
					},
				},
			},
			Path: &ast.StringLiteral{
				BaseNode: ast.BaseNode{
					Comments: nil,
					Errors:   nil,
					Loc: &ast.SourceLocation{
						End: ast.Position{
							Column: 17,
							Line:   5,
						},
						File:   "join_test.flux",
						Source: "\"testing\"",
						Start: ast.Position{
							Column: 8,
							Line:   5,
						},
					},
				},
				Value: "testing",
			},
		}},
		Metadata: "parser-type=rust",
		Name:     "join_test.flux",
		Package: &ast.PackageClause{
			BaseNode: ast.BaseNode{
				Comments: nil,
				Errors:   nil,
				Loc: &ast.SourceLocation{
					End: ast.Position{
						Column: 20,
						Line:   1,
					},
					File:   "join_test.flux",
					Source: "package promql_test",
					Start: ast.Position{
						Column: 1,
						Line:   1,
					},
				},
			},
			Name: &ast.Identifier{
				BaseNode: ast.BaseNode{
					Comments: nil,
					Errors:   nil,
					Loc: &ast.SourceLocation{
						End: ast.Position{
							Column: 20,
							Line:   1,
						},
						File:   "join_test.flux",
						Source: "promql_test",
						Start: ast.Position{
							Column: 9,
							Line:   1,
						},
					},
				},
				Name: "promql_test",
			},
		},
	}},
	Package: "promql_test",
	Path:    "internal/promql",
}}

Functions

func NewChangesTransformation

func NewChangesTransformation(d execute.Dataset, cache execute.TableBuilderCache, spec *ChangesProcedureSpec) *changesTransformation

func NewExtrapolatedRateTransformation

func NewExtrapolatedRateTransformation(d execute.Dataset, cache execute.TableBuilderCache, spec *ExtrapolatedRateProcedureSpec) *extrapolatedRateTransformation

func NewHoltWintersTransformation

func NewHoltWintersTransformation(d execute.Dataset, cache execute.TableBuilderCache, spec *HoltWintersProcedureSpec) *holtWintersTransformation

func NewInstantRateTransformation

func NewInstantRateTransformation(d execute.Dataset, cache execute.TableBuilderCache, spec *InstantRateProcedureSpec) *instantRateTransformation

func NewLabelReplaceTransformation

func NewLabelReplaceTransformation(d execute.Dataset, cache execute.TableBuilderCache, spec *LabelReplaceProcedureSpec) *labelReplaceTransformation

func NewLinearRegressionTransformation

func NewLinearRegressionTransformation(d execute.Dataset, cache execute.TableBuilderCache, spec *LinearRegressionProcedureSpec) *linearRegressionTransformation

func NewResetsTransformation

func NewResetsTransformation(d execute.Dataset, cache execute.TableBuilderCache, spec *ResetsProcedureSpec) *resetsTransformation

func NewTimestampTransformation

func NewTimestampTransformation(d execute.Dataset, cache execute.TableBuilderCache, spec *TimestampProcedureSpec) *timestampTransformation

Types

type ChangesOpSpec

type ChangesOpSpec struct{}

func (*ChangesOpSpec) Kind

func (s *ChangesOpSpec) Kind() flux.OperationKind

type ChangesProcedureSpec

type ChangesProcedureSpec struct {
	plan.DefaultCost
}

func (*ChangesProcedureSpec) Copy

func (*ChangesProcedureSpec) Kind

func (*ChangesProcedureSpec) TriggerSpec

func (s *ChangesProcedureSpec) TriggerSpec() plan.TriggerSpec

TriggerSpec implements plan.TriggerAwareProcedureSpec

type EmptyTableOpSpec

type EmptyTableOpSpec struct{}

func (*EmptyTableOpSpec) Kind

type EmptyTableProcedureSpec

type EmptyTableProcedureSpec struct {
	plan.DefaultCost
}

func (*EmptyTableProcedureSpec) Copy

func (*EmptyTableProcedureSpec) Kind

type EmptyTableSource

type EmptyTableSource struct {
	execute.ExecutionNode
	// contains filtered or unexported fields
}

func (*EmptyTableSource) AddTransformation

func (s *EmptyTableSource) AddTransformation(t execute.Transformation)

func (*EmptyTableSource) Run

func (s *EmptyTableSource) Run(ctx context.Context)

type ExtrapolatedRateOpSpec

type ExtrapolatedRateOpSpec struct {
	IsCounter bool `json:"isCounter"`
	IsRate    bool `json:"isRate"`
}

func (*ExtrapolatedRateOpSpec) Kind

type ExtrapolatedRateProcedureSpec

type ExtrapolatedRateProcedureSpec struct {
	plan.DefaultCost
	IsCounter bool
	IsRate    bool
}

func (*ExtrapolatedRateProcedureSpec) Copy

func (*ExtrapolatedRateProcedureSpec) Kind

func (*ExtrapolatedRateProcedureSpec) TriggerSpec

TriggerSpec implements plan.TriggerAwareProcedureSpec

type HistogramQuantileOpSpec

type HistogramQuantileOpSpec struct {
	Quantile         float64 `json:"quantile"`
	CountColumn      string  `json:"countColumn"`
	UpperBoundColumn string  `json:"upperBoundColumn"`
	ValueColumn      string  `json:"valueColumn"`
}

func (*HistogramQuantileOpSpec) Kind

type HistogramQuantileProcedureSpec

type HistogramQuantileProcedureSpec struct {
	plan.DefaultCost
	Quantile         float64 `json:"quantile"`
	CountColumn      string  `json:"countColumn"`
	UpperBoundColumn string  `json:"upperBoundColumn"`
	ValueColumn      string  `json:"valueColumn"`
}

func (*HistogramQuantileProcedureSpec) Copy

func (*HistogramQuantileProcedureSpec) Kind

type HoltWintersOpSpec

type HoltWintersOpSpec struct {
	SmoothingFactor float64 `json:"smoothingFactor"`
	TrendFactor     float64 `json:"trendFactor"`
}

func (*HoltWintersOpSpec) Kind

type HoltWintersProcedureSpec

type HoltWintersProcedureSpec struct {
	plan.DefaultCost
	SmoothingFactor float64
	TrendFactor     float64
}

func (*HoltWintersProcedureSpec) Copy

func (*HoltWintersProcedureSpec) Kind

func (*HoltWintersProcedureSpec) TriggerSpec

func (s *HoltWintersProcedureSpec) TriggerSpec() plan.TriggerSpec

TriggerSpec implements plan.TriggerAwareProcedureSpec

type InstantRateOpSpec

type InstantRateOpSpec struct {
	IsRate bool `json:"isRate"`
}

func (*InstantRateOpSpec) Kind

type InstantRateProcedureSpec

type InstantRateProcedureSpec struct {
	plan.DefaultCost
	IsRate bool
}

func (*InstantRateProcedureSpec) Copy

func (*InstantRateProcedureSpec) Kind

func (*InstantRateProcedureSpec) TriggerSpec

func (s *InstantRateProcedureSpec) TriggerSpec() plan.TriggerSpec

TriggerSpec implements plan.TriggerAwareProcedureSpec

type LabelReplaceOpSpec

type LabelReplaceOpSpec struct {
	Source      string `json:"source"`
	Destination string `json:"destination"`
	Regex       string `json:"regex"`
	Replacement string `json:"replacement"`
}

func (*LabelReplaceOpSpec) Kind

type LabelReplaceProcedureSpec

type LabelReplaceProcedureSpec struct {
	plan.DefaultCost
	Source      string
	Destination string
	Regex       string
	Replacement string
}

func (*LabelReplaceProcedureSpec) Copy

func (*LabelReplaceProcedureSpec) Kind

type LinearRegressionOpSpec

type LinearRegressionOpSpec struct {
	Predict bool `json:"predict"`
	// Stored as seconds in float64 to avoid back-and-forth duration conversions from PromQL.
	FromNow float64 `json:"fromNow"`
}

func (*LinearRegressionOpSpec) Kind

type LinearRegressionProcedureSpec

type LinearRegressionProcedureSpec struct {
	plan.DefaultCost
	Predict bool
	FromNow float64
}

func (*LinearRegressionProcedureSpec) Copy

func (*LinearRegressionProcedureSpec) Kind

func (*LinearRegressionProcedureSpec) TriggerSpec

TriggerSpec implements plan.TriggerAwareProcedureSpec

type ResetsOpSpec

type ResetsOpSpec struct{}

func (*ResetsOpSpec) Kind

func (s *ResetsOpSpec) Kind() flux.OperationKind

type ResetsProcedureSpec

type ResetsProcedureSpec struct {
	plan.DefaultCost
}

func (*ResetsProcedureSpec) Copy

func (*ResetsProcedureSpec) Kind

func (*ResetsProcedureSpec) TriggerSpec

func (s *ResetsProcedureSpec) TriggerSpec() plan.TriggerSpec

TriggerSpec implements plan.TriggerAwareProcedureSpec

type TimestampOpSpec

type TimestampOpSpec struct{}

func (*TimestampOpSpec) Kind

type TimestampProcedureSpec

type TimestampProcedureSpec struct {
	plan.DefaultCost
}

func (*TimestampProcedureSpec) Copy

func (*TimestampProcedureSpec) Kind

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL