tdata

package
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Nov 26, 2022 License: MIT Imports: 1 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var HasuraSubqueryWithAggregationData = &hasuraData{
	GQL: `query MyQuery($email: String) {
  users(where: {email: {_eq: $email}}) {
    email
    name
    tasks_aggregate {
      aggregate {
        avg {
          status
        }
      }
    }
    tasks(where: {}) {
      title
      description
    }
  }
}`,
	SQL: `SELECT
  coalesce(json_agg("root"), '[]') AS "root"
FROM
  (
    SELECT
      row_to_json(
        (
          SELECT
            "_e"
          FROM
            (
              SELECT
                "_root.base"."email" AS "email",
                "_root.base"."name" AS "name",
                "_root.ar.root.tasks_aggregate"."tasks_aggregate" AS "tasks_aggregate",
                "_root.ar.root.tasks"."tasks" AS "tasks"
            ) AS "_e"
        )
      ) AS "root"
    FROM
      (
        SELECT
          *
        FROM
          "public"."users"
        WHERE
          (
            ("public"."users"."email") = (('test33333@example.com') :: varchar)
          )
      ) AS "_root.base"
      LEFT OUTER JOIN LATERAL (
        SELECT
          json_build_object(
            'aggregate',
            json_build_object(
              'avg',
              json_build_object('status', avg("status"))
            )
          ) AS "tasks_aggregate"
        FROM
          (
            SELECT
              "_root.ar.root.tasks_aggregate.base"."status" AS "status"
            FROM
              (
                SELECT
                  *
                FROM
                  "public"."tasks"
                WHERE
                  (("_root.base"."id") = ("user_id"))
              ) AS "_root.ar.root.tasks_aggregate.base"
          ) AS "_root.ar.root.tasks_aggregate"
      ) AS "_root.ar.root.tasks_aggregate" ON ('true')
      LEFT OUTER JOIN LATERAL (
        SELECT
          coalesce(json_agg("tasks"), '[]') AS "tasks"
        FROM
          (
            SELECT
              row_to_json(
                (
                  SELECT
                    "_e"
                  FROM
                    (
                      SELECT
                        "_root.ar.root.tasks.base"."title" AS "title",
                        "_root.ar.root.tasks.base"."description" AS "description"
                    ) AS "_e"
                )
              ) AS "tasks"
            FROM
              (
                SELECT
                  *
                FROM
                  "public"."tasks"
                WHERE
                  (("_root.base"."id") = ("user_id"))
              ) AS "_root.ar.root.tasks.base"
          ) AS "_root.ar.root.tasks"
      ) AS "_root.ar.root.tasks" ON ('true')
  ) AS "_root"`,
	Scopes: []*dparser.StmtScope{
		{
			Name: "<root>",
			Fields: []*dparser.Field{
				{
					AsName:  "root",
					Columns: []*dparser.FieldColumn{{Name: "root", Type: dparser.FieldReference}},
				},
			},
			Tables: []*dparser.Table{
				{AsName: "_root", Name: "<select0>"},
			},
			SubScopes: []*dparser.StmtScope{
				{
					Name: "<select0>",
					Fields: []*dparser.Field{
						{
							AsName:  "root",
							Columns: []*dparser.FieldColumn{{ReferenceName: "<field0>", Type: dparser.FieldSubquery}},
						},
					},
					FieldScopes: []*dparser.StmtScope{
						{
							Name: "<field0>",
							Fields: []*dparser.Field{
								{Columns: []*dparser.FieldColumn{{Name: "_e", Type: dparser.FieldReference}}},
							},
							Tables: []*dparser.Table{{AsName: "_e", Name: "<select4>"}},
							SubScopes: []*dparser.StmtScope{
								{
									Name: "<select4>",
									Fields: []*dparser.Field{
										{
											AsName:  "email",
											Columns: []*dparser.FieldColumn{{Table: "_root.base", Name: "email", Type: dparser.FieldReference}},
										},
										{
											AsName:  "name",
											Columns: []*dparser.FieldColumn{{Table: "_root.base", Name: "name", Type: dparser.FieldReference}},
										},
										{
											AsName:  "tasks_aggregate",
											Columns: []*dparser.FieldColumn{{Table: "_root.ar.root.tasks_aggregate", Name: "tasks_aggregate", Type: dparser.FieldReference}},
										},
										{
											AsName:  "tasks",
											Columns: []*dparser.FieldColumn{{Table: "_root.ar.root.tasks", Name: "tasks", Type: dparser.FieldReference}},
										},
									},
								},
							},
						},
					},
					Tables: []*dparser.Table{
						{AsName: "_root.base", Name: "<select1>"},
						{AsName: "_root.ar.root.tasks_aggregate", Name: "<select2>", IsLateral: true},
						{AsName: "_root.ar.root.tasks", Name: "<select3>", IsLateral: true},
					},
					SubScopes: []*dparser.StmtScope{
						{
							Name: "<select1>",
							Fields: []*dparser.Field{
								{Columns: []*dparser.FieldColumn{{Type: dparser.FieldStar}}},
								{Columns: []*dparser.FieldColumn{{Table: "users", Name: "email", Type: dparser.FieldCondition}}},
							},
							Tables: []*dparser.Table{{Name: "users"}},
						},
						{
							Name: "<select2>",
							Fields: []*dparser.Field{
								{AsName: "tasks_aggregate", Columns: []*dparser.FieldColumn{{Name: "status", Type: dparser.FieldReference}}},
							},
							Tables: []*dparser.Table{{AsName: "_root.ar.root.tasks_aggregate", Name: "<select5>"}},
							SubScopes: []*dparser.StmtScope{
								{
									Name: "<select5>",
									Fields: []*dparser.Field{
										{AsName: "status", Columns: []*dparser.FieldColumn{
											{Table: "_root.ar.root.tasks_aggregate.base", Name: "status", Type: dparser.FieldReference},
										}},
									},
									Tables: []*dparser.Table{{AsName: "_root.ar.root.tasks_aggregate.base", Name: "<select6>"}},
									SubScopes: []*dparser.StmtScope{
										{
											Name: "<select6>",
											Fields: []*dparser.Field{
												{Columns: []*dparser.FieldColumn{{Type: dparser.FieldStar}}},
												{Columns: []*dparser.FieldColumn{
													{Table: "_root.base", Name: "id", Type: dparser.FieldCondition},
													{Name: "user_id", Type: dparser.FieldCondition},
												}},
											},
											Tables: []*dparser.Table{{Name: "tasks"}},
										},
									},
								},
							},
						},
						{
							Name: "<select3>",
							Fields: []*dparser.Field{
								{
									AsName:  "tasks",
									Columns: []*dparser.FieldColumn{{Name: "tasks", Type: dparser.FieldReference}},
								},
							},
							Tables: []*dparser.Table{{AsName: "_root.ar.root.tasks", Name: "<select7>"}},
							SubScopes: []*dparser.StmtScope{
								{
									Name: "<select7>",
									Fields: []*dparser.Field{
										{AsName: "tasks", Columns: []*dparser.FieldColumn{{ReferenceName: "<field1>", Type: dparser.FieldSubquery}}},
									},
									FieldScopes: []*dparser.StmtScope{
										{
											Name: "<field1>",
											Fields: []*dparser.Field{
												{Columns: []*dparser.FieldColumn{{Name: "_e", Type: dparser.FieldReference}}},
											},
											Tables: []*dparser.Table{{AsName: "_e", Name: "<select9>"}},
											SubScopes: []*dparser.StmtScope{
												{
													Name: "<select9>",
													Fields: []*dparser.Field{
														{
															AsName:  "title",
															Columns: []*dparser.FieldColumn{{Table: "_root.ar.root.tasks.base", Name: "title", Type: dparser.FieldReference}},
														},
														{
															AsName:  "description",
															Columns: []*dparser.FieldColumn{{Table: "_root.ar.root.tasks.base", Name: "description", Type: dparser.FieldReference}},
														},
													},
												},
											},
										},
									},
									Tables: []*dparser.Table{{AsName: "_root.ar.root.tasks.base", Name: "<select8>"}},
									SubScopes: []*dparser.StmtScope{
										{
											Name: "<select8>",
											Fields: []*dparser.Field{
												{Columns: []*dparser.FieldColumn{{Type: dparser.FieldStar}}},
												{Columns: []*dparser.FieldColumn{
													{Table: "_root.base", Name: "id", Type: dparser.FieldCondition},
													{Name: "user_id", Type: dparser.FieldCondition},
												}},
											},
											Tables: []*dparser.Table{{Name: "tasks"}},
										},
									},
								},
							},
						},
					},
				},
			},
		},
	},
}
View Source
var HasuraSubqueryWithVariablesData = &hasuraData{
	GQL: `query MyQuery($email: String) {
  tasks(where: {user: {email: {_eq: $email}}}) {
    user {
      email
      id
      name
    }
    description
    id
    status
  }
}
`,
	SQL: `
SELECT
  COALESCE(JSON_AGG("root"), '[]') AS "root"
FROM
  (
    SELECT
      ROW_TO_JSON(
        (
          SELECT
            "_e"
          FROM
            (
              SELECT
                "_root.or.user"."user" AS "user",
                 "_root.base"."description" AS "description",
                 "_root.base"."id" AS "id",
                 "_root.base"."status" AS "status"
            ) AS "_e"
        )
      ) AS "root"
    FROM
      (
        SELECT
          *
        FROM
          "public"."tasks"
        WHERE
          (
            EXISTS
              (
                SELECT 1
                FROM
                  "public"."users" AS "__be_0_users"
                WHERE
                  (
                    (
                      (
                        ("__be_0_users"."id") = ("public"."tasks"."user_id")
                      ) AND
                      ('true')
                    ) AND
                    (
                      ('true') AND
                      (
                        (
                          (
                            (
                              ("__be_0_users"."email") = (('test1111@example.com')::varchar)
                            ) AND
                            ('true')
                          ) AND
                          ('true')
                        ) AND
                        ('true')
                      )
                    )
                  )
            )
          )
      ) AS "_root.base"
    LEFT OUTER JOIN LATERAL
      (
        SELECT row_to_json(
          (
            SELECT
              "_e"
            FROM
              (
                SELECT
                  "_root.or.user.base"."email" AS "email",
                  "_root.or.user.base"."id" AS "id",
                  "_root.or.user.base"."name" AS "name"
                ) AS "_e"
          )
        ) AS "user"
        FROM
          (
            SELECT
              *
            FROM
              "public"."users"
            WHERE
              (("_root.base"."user_id") = ("id"))
            LIMIT 1
          ) AS "_root.or.user.base"
      ) AS "_root.or.user" ON ('true')
  ) AS "_root"
`,
	Scopes: []*dparser.StmtScope{
		{
			Name: "<root>",
			Fields: []*dparser.Field{
				{
					AsName:  "root",
					Columns: []*dparser.FieldColumn{{Name: "root", Type: dparser.FieldReference}},
				},
			},
			Tables: []*dparser.Table{
				{AsName: "_root", Name: "<select0>"},
			},
			SubScopes: []*dparser.StmtScope{
				{
					Name: "<select0>",
					Fields: []*dparser.Field{
						{
							AsName:  "root",
							Columns: []*dparser.FieldColumn{{ReferenceName: "<field0>", Type: dparser.FieldSubquery}},
						},
					},
					FieldScopes: []*dparser.StmtScope{
						{
							Name: "<field0>",
							Fields: []*dparser.Field{
								{Columns: []*dparser.FieldColumn{{Name: "_e", Type: dparser.FieldReference}}},
							},
							Tables: []*dparser.Table{{AsName: "_e", Name: "<select3>"}},
							SubScopes: []*dparser.StmtScope{
								{
									Name: "<select3>",
									Fields: []*dparser.Field{
										{
											AsName:  "user",
											Columns: []*dparser.FieldColumn{{Table: "_root.or.user", Name: "user", Type: dparser.FieldReference}},
										},
										{
											AsName:  "description",
											Columns: []*dparser.FieldColumn{{Table: "_root.base", Name: "description", Type: dparser.FieldReference}},
										},
										{
											AsName:  "id",
											Columns: []*dparser.FieldColumn{{Table: "_root.base", Name: "id", Type: dparser.FieldReference}},
										},
										{
											AsName:  "status",
											Columns: []*dparser.FieldColumn{{Table: "_root.base", Name: "status", Type: dparser.FieldReference}},
										},
									},
								},
							},
						},
					},
					Tables: []*dparser.Table{
						{AsName: "_root.base", Name: "<select1>"},
						{AsName: "_root.or.user", Name: "<select2>", IsLateral: true},
					},
					SubScopes: []*dparser.StmtScope{
						{
							Name: "<select1>",
							Fields: []*dparser.Field{
								{Columns: []*dparser.FieldColumn{{Type: dparser.FieldStar}}},
								{Columns: []*dparser.FieldColumn{{ReferenceName: "<field1>", Type: dparser.FieldSubquery}}},
							},
							FieldScopes: []*dparser.StmtScope{
								{
									Name: "<field1>",
									Fields: []*dparser.Field{
										{Columns: []*dparser.FieldColumn{
											{Table: "__be_0_users", Name: "id", Type: dparser.FieldCondition},
											{Table: "tasks", Name: "user_id", Type: dparser.FieldCondition},
											{Table: "__be_0_users", Name: "email", Type: dparser.FieldCondition},
										}},
									},
									Tables: []*dparser.Table{{AsName: "__be_0_users", Name: "users"}},
								},
							},
							Tables: []*dparser.Table{{Name: "tasks"}},
						},
						{
							Name: "<select2>",
							Fields: []*dparser.Field{
								{
									AsName:  "user",
									Columns: []*dparser.FieldColumn{{ReferenceName: "<field2>", Type: dparser.FieldSubquery}},
								},
							},
							FieldScopes: []*dparser.StmtScope{
								{
									Name: "<field2>",
									Fields: []*dparser.Field{
										{Columns: []*dparser.FieldColumn{{Name: "_e", Type: dparser.FieldReference}}},
									},
									Tables: []*dparser.Table{{AsName: "_e", Name: "<select5>"}},
									SubScopes: []*dparser.StmtScope{
										{
											Name: "<select5>",
											Fields: []*dparser.Field{
												{
													AsName:  "email",
													Columns: []*dparser.FieldColumn{{Table: "_root.or.user.base", Name: "email", Type: dparser.FieldReference}},
												},
												{
													AsName:  "id",
													Columns: []*dparser.FieldColumn{{Table: "_root.or.user.base", Name: "id", Type: dparser.FieldReference}},
												},
												{
													AsName:  "name",
													Columns: []*dparser.FieldColumn{{Table: "_root.or.user.base", Name: "name", Type: dparser.FieldReference}},
												},
											},
										},
									},
								},
							},
							Tables: []*dparser.Table{{AsName: "_root.or.user.base", Name: "<select4>"}},
							SubScopes: []*dparser.StmtScope{
								{
									Name: "<select4>",
									Fields: []*dparser.Field{
										{Columns: []*dparser.FieldColumn{{Type: dparser.FieldStar}}},
										{Columns: []*dparser.FieldColumn{
											{Table: "_root.base", Name: "user_id", Type: dparser.FieldCondition},
											{Name: "id", Type: dparser.FieldCondition},
										}},
									},
									Tables: []*dparser.Table{{Name: "users"}},
								},
							},
						},
					},
				},
			},
		},
	},
}
View Source
var HasuraSubqueryWithWhereData = &hasuraData{
	GQL: `
query MyQuery {
  users(where: {email: {_eq: "test33333@example.com"}}) {
    tasks {
      title
      status
    }
    email
    name
  }
}`,
	SQL: `
SELECT
  coalesce(json_agg("root"), '[]') AS "root"
FROM
  (
    SELECT
      row_to_json(
        (
          SELECT
            "_e"
          FROM
            (
              SELECT
                "_root.ar.root.tasks"."tasks" AS "tasks",
                "_root.base"."email" AS "email",
                "_root.base"."name" AS "name"
            ) AS "_e"
        )
      ) AS "root"
    FROM
      (
        SELECT
          *
        FROM
          "public"."users"
        WHERE
          (
            ("public"."users"."email") = (('test33333@example.com') :: varchar)
          )
      ) AS "_root.base"
      LEFT OUTER JOIN LATERAL (
        SELECT
          coalesce(json_agg("tasks"), '[]') AS "tasks"
        FROM
          (
            SELECT
              row_to_json(
                (
                  SELECT
                    "_e"
                  FROM
                    (
                      SELECT
                        "_root.ar.root.tasks.base"."title" AS "title",
                        "_root.ar.root.tasks.base"."status" AS "status"
                    ) AS "_e"
                )
              ) AS "tasks"
            FROM
              (
                SELECT
                  *
                FROM
                  "public"."tasks"
                WHERE
                  (("_root.base"."id") = ("user_id"))
              ) AS "_root.ar.root.tasks.base"
          ) AS "_root.ar.root.tasks"
      ) AS "_root.ar.root.tasks" ON ('true')
  ) AS "_root"
`,
	Scopes: []*dparser.StmtScope{
		{
			Name: "<root>",
			Fields: []*dparser.Field{
				{
					AsName:  "root",
					Columns: []*dparser.FieldColumn{{Name: "root", Type: dparser.FieldReference}},
				},
			},
			Tables: []*dparser.Table{
				{AsName: "_root", Name: "<select0>"},
			},
			SubScopes: []*dparser.StmtScope{
				{
					Name: "<select0>",
					Fields: []*dparser.Field{
						{
							AsName:  "root",
							Columns: []*dparser.FieldColumn{{ReferenceName: "<field0>", Type: dparser.FieldSubquery}},
						},
					},
					FieldScopes: []*dparser.StmtScope{
						{
							Name: "<field0>",
							Fields: []*dparser.Field{
								{Columns: []*dparser.FieldColumn{{Name: "_e", Type: dparser.FieldReference}}},
							},
							Tables: []*dparser.Table{{AsName: "_e", Name: "<select3>"}},
							SubScopes: []*dparser.StmtScope{
								{
									Name: "<select3>",
									Fields: []*dparser.Field{
										{
											AsName:  "tasks",
											Columns: []*dparser.FieldColumn{{Table: "_root.ar.root.tasks", Name: "tasks", Type: dparser.FieldReference}},
										},
										{
											AsName:  "email",
											Columns: []*dparser.FieldColumn{{Table: "_root.base", Name: "email", Type: dparser.FieldReference}},
										},
										{
											AsName:  "name",
											Columns: []*dparser.FieldColumn{{Table: "_root.base", Name: "name", Type: dparser.FieldReference}},
										},
									},
								},
							},
						},
					},
					Tables: []*dparser.Table{
						{AsName: "_root.base", Name: "<select1>"},
						{AsName: "_root.ar.root.tasks", Name: "<select2>", IsLateral: true},
					},
					SubScopes: []*dparser.StmtScope{
						{
							Name: "<select1>",
							Fields: []*dparser.Field{
								{Columns: []*dparser.FieldColumn{{Type: dparser.FieldStar}}},
								{Columns: []*dparser.FieldColumn{{Table: "users", Name: "email", Type: dparser.FieldCondition}}},
							},
							Tables: []*dparser.Table{{Name: "users"}},
						},
						{
							Name: "<select2>",
							Fields: []*dparser.Field{
								{
									AsName:  "tasks",
									Columns: []*dparser.FieldColumn{{Name: "tasks", Type: dparser.FieldReference}},
								},
							},
							Tables: []*dparser.Table{{AsName: "_root.ar.root.tasks", Name: "<select4>"}},
							SubScopes: []*dparser.StmtScope{
								{
									Name: "<select4>",
									Fields: []*dparser.Field{
										{AsName: "tasks", Columns: []*dparser.FieldColumn{{ReferenceName: "<field1>", Type: dparser.FieldSubquery}}},
									},
									FieldScopes: []*dparser.StmtScope{
										{
											Name: "<field1>",
											Fields: []*dparser.Field{
												{Columns: []*dparser.FieldColumn{{Name: "_e", Type: dparser.FieldReference}}},
											},
											Tables: []*dparser.Table{{AsName: "_e", Name: "<select6>"}},
											SubScopes: []*dparser.StmtScope{
												{
													Name: "<select6>",
													Fields: []*dparser.Field{
														{
															AsName:  "title",
															Columns: []*dparser.FieldColumn{{Table: "_root.ar.root.tasks.base", Name: "title", Type: dparser.FieldReference}},
														},
														{
															AsName:  "status",
															Columns: []*dparser.FieldColumn{{Table: "_root.ar.root.tasks.base", Name: "status", Type: dparser.FieldReference}},
														},
													},
												},
											},
										},
									},
									Tables: []*dparser.Table{{AsName: "_root.ar.root.tasks.base", Name: "<select5>"}},
									SubScopes: []*dparser.StmtScope{
										{
											Name: "<select5>",
											Fields: []*dparser.Field{
												{
													Columns: []*dparser.FieldColumn{{Type: dparser.FieldStar}},
												},
												{
													Columns: []*dparser.FieldColumn{
														{Table: "_root.base", Name: "id", Type: dparser.FieldCondition},
														{Name: "user_id", Type: dparser.FieldCondition},
													},
												},
											},
											Tables: []*dparser.Table{{Name: "tasks"}},
										},
									},
								},
							},
						},
					},
				},
			},
		},
	},
}
View Source
var PostgresCorrelatedSubqueryData = &postgresData{
	SQL: `
SELECT description
FROM tasks
WHERE EXISTS(SELECT * FROM users WHERE users.id = user_id)
`,
	Scopes: []*dparser.StmtScope{
		{
			Name: "<root>",
			Fields: []*dparser.Field{
				{Columns: []*dparser.FieldColumn{{Name: "description", Type: dparser.FieldReference}}},
				{Columns: []*dparser.FieldColumn{{ReferenceName: "<field0>", Type: dparser.FieldSubquery}}},
			},
			FieldScopes: []*dparser.StmtScope{
				{
					Name: "<field0>",
					Fields: []*dparser.Field{
						{Columns: []*dparser.FieldColumn{{Type: dparser.FieldStar}}},
						{Columns: []*dparser.FieldColumn{
							{Table: "users", Name: "id", Type: dparser.FieldCondition},
							{Name: "user_id", Type: dparser.FieldCondition},
						}},
					},
					Tables: []*dparser.Table{
						{Name: "users"},
					},
				},
			},
			Tables: []*dparser.Table{
				{Name: "tasks"},
			},
		},
	},
}
View Source
var PostgresSubqueryInFromData = &postgresData{
	SQL: `
SELECT *
FROM (SELECT id, user_id FROM tasks)
`,
	Scopes: []*dparser.StmtScope{
		{
			Name: "<root>",
			Fields: []*dparser.Field{
				{Columns: []*dparser.FieldColumn{{Type: dparser.FieldStar}}},
			},
			Tables: []*dparser.Table{
				{Name: "<select0>"},
			},
			SubScopes: []*dparser.StmtScope{
				{
					Name: "<select0>",
					Fields: []*dparser.Field{
						{Columns: []*dparser.FieldColumn{{Name: "id", Type: dparser.FieldReference}}},
						{Columns: []*dparser.FieldColumn{{Name: "user_id", Type: dparser.FieldReference}}},
					},
					Tables: []*dparser.Table{
						{Name: "tasks"},
					},
				},
			},
		},
	},
}
View Source
var PostgresSubqueryInJoinData = &postgresData{
	SQL: `
SELECT name, t.id, user_id
FROM users
INNER JOIN (SELECT id, user_id FROM tasks) AS t ON users.id = t.user_id
`,
	Scopes: []*dparser.StmtScope{
		{
			Name: "<root>",
			Fields: []*dparser.Field{
				{Columns: []*dparser.FieldColumn{{Name: "name", Type: dparser.FieldReference}}},
				{Columns: []*dparser.FieldColumn{{Table: "t", Name: "id", Type: dparser.FieldReference}}},
				{Columns: []*dparser.FieldColumn{{Name: "user_id", Type: dparser.FieldReference}}},
				{Columns: []*dparser.FieldColumn{
					{Table: "users", Name: "id", Type: dparser.FieldCondition},
					{Table: "t", Name: "user_id", Type: dparser.FieldCondition},
				}},
			},
			Tables: []*dparser.Table{
				{Name: "users"},
				{Name: "<select0>", AsName: "t"},
			},
			SubScopes: []*dparser.StmtScope{
				{
					Name: "<select0>",
					Fields: []*dparser.Field{
						{Columns: []*dparser.FieldColumn{{Name: "id", Type: dparser.FieldReference}}},
						{Columns: []*dparser.FieldColumn{{Name: "user_id", Type: dparser.FieldReference}}},
					},
					Tables: []*dparser.Table{
						{Name: "tasks"},
					},
				},
			},
		},
	},
}
View Source
var PostgresSubqueryInSelectAliasedFieldData = &postgresData{
	SQL: "SELECT name, is_admin, (SELECT COUNT(status) FROM tasks) AS status_count FROM users",
	Scopes: []*dparser.StmtScope{{
		Name: "<root>",
		Fields: []*dparser.Field{
			{Columns: []*dparser.FieldColumn{{Name: "name", Type: dparser.FieldReference}}},
			{Columns: []*dparser.FieldColumn{{Name: "is_admin", Type: dparser.FieldReference}}},
			{AsName: "status_count", Columns: []*dparser.FieldColumn{{ReferenceName: "<field0>", Type: dparser.FieldSubquery}}},
		},
		FieldScopes: []*dparser.StmtScope{
			{
				Name: "<field0>",
				Fields: []*dparser.Field{
					{Columns: []*dparser.FieldColumn{{Name: "status", Type: dparser.FieldReference}}},
				},
				Tables: []*dparser.Table{
					{Name: "tasks"},
				},
			},
		},
		Tables: []*dparser.Table{
			{Name: "users"},
		},
	}},
}
View Source
var PostgresSubqueryInSelectData = &postgresData{
	SQL: "SELECT (SELECT user_id FROM tasks limit 1)",
	Scopes: []*dparser.StmtScope{
		{
			Name: "<root>",
			Fields: []*dparser.Field{
				{Columns: []*dparser.FieldColumn{{ReferenceName: "<field0>", Type: dparser.FieldSubquery}}},
			},
			FieldScopes: []*dparser.StmtScope{
				{
					Name: "<field0>",
					Fields: []*dparser.Field{
						{Columns: []*dparser.FieldColumn{{Name: "user_id", Type: dparser.FieldReference}}},
					},
					Tables: []*dparser.Table{
						{Name: "tasks"},
					},
				},
			},
		},
	},
}
View Source
var PostgresSubqueryInSelectFunctionData = &postgresData{
	SQL: `
SELECT row_to_json(
  (
    SELECT t
    FROM (SELECT id, description FROM tasks LIMIT 1) AS t
  )
)
`,
	Scopes: []*dparser.StmtScope{
		{
			Name: "<root>",
			Fields: []*dparser.Field{
				{Columns: []*dparser.FieldColumn{{ReferenceName: "<field0>", Type: dparser.FieldSubquery}}},
			},
			FieldScopes: []*dparser.StmtScope{
				{
					Name: "<field0>",
					Fields: []*dparser.Field{
						{Columns: []*dparser.FieldColumn{{Name: "t", Type: dparser.FieldReference}}},
					},
					Tables: []*dparser.Table{
						{Name: "<select0>", AsName: "t"},
					},
					SubScopes: []*dparser.StmtScope{
						{
							Name: "<select0>",
							Fields: []*dparser.Field{
								{Columns: []*dparser.FieldColumn{{Name: "id", Type: dparser.FieldReference}}},
								{Columns: []*dparser.FieldColumn{{Name: "description", Type: dparser.FieldReference}}},
							},
							Tables: []*dparser.Table{
								{Name: "tasks"},
							},
						},
					},
				},
			},
		},
	},
}
View Source
var PostgresSubqueryUsingStarData = &postgresData{
	SQL: `
SELECT description
FROM
	(SELECT * FROM tasks) AS t
`,
	Scopes: []*dparser.StmtScope{
		{
			Name: "<root>",
			Fields: []*dparser.Field{
				{Columns: []*dparser.FieldColumn{
					{Name: "description", Type: dparser.FieldReference},
				}},
			},
			Tables: []*dparser.Table{
				{Name: "<select0>", AsName: "t"},
			},
			SubScopes: []*dparser.StmtScope{
				{
					Name: "<select0>",
					Fields: []*dparser.Field{
						{Columns: []*dparser.FieldColumn{{Type: dparser.FieldStar}}},
					},
					Tables: []*dparser.Table{
						{Name: "tasks"},
					},
				},
			},
		},
	},
}
View Source
var PostgresSubqueryWithAggregateFunctionData = &postgresData{
	SQL: `
SELECT json_agg(t)
FROM (SELECT description FROM tasks LIMIT 3) AS t;
`,
	Scopes: []*dparser.StmtScope{
		{
			Name: "<root>",
			Fields: []*dparser.Field{
				{Columns: []*dparser.FieldColumn{{Name: "t", Type: dparser.FieldReference}}},
			},
			Tables: []*dparser.Table{
				{AsName: "t", Name: "<select0>"},
			},
			SubScopes: []*dparser.StmtScope{
				{
					Name: "<select0>",
					Fields: []*dparser.Field{
						{Columns: []*dparser.FieldColumn{{Name: "description", Type: dparser.FieldReference}}},
					},
					Tables: []*dparser.Table{
						{Name: "tasks"},
					},
				},
			},
		},
	},
}
View Source
var PostgresSubqueryWithComparisonData = &postgresData{
	SQL: "SELECT (SELECT COUNT(status) FROM tasks) - (SELECT COUNT(description) FROM tasks) AS no_desc_count",
	Scopes: []*dparser.StmtScope{{
		Name: "<root>",
		Fields: []*dparser.Field{
			{AsName: "no_desc_count", Columns: []*dparser.FieldColumn{
				{ReferenceName: "<field0>", Type: dparser.FieldSubquery},
				{ReferenceName: "<field1>", Type: dparser.FieldSubquery},
			}},
		},
		FieldScopes: []*dparser.StmtScope{
			{
				Name: "<field0>",
				Fields: []*dparser.Field{
					{Columns: []*dparser.FieldColumn{{Name: "status", Type: dparser.FieldReference}}},
				},
				Tables: []*dparser.Table{
					{Name: "tasks"},
				},
			},
			{
				Name: "<field1>",
				Fields: []*dparser.Field{
					{Columns: []*dparser.FieldColumn{{Name: "description", Type: dparser.FieldReference}}},
				},
				Tables: []*dparser.Table{
					{Name: "tasks"},
				},
			},
		},
	}},
}
View Source
var PostgresSubqueryWithExistData = &postgresData{
	SQL: "SELECT name, EXISTS (SELECT * FROM tasks WHERE user_id = users.id) FROM users",
	Scopes: []*dparser.StmtScope{{
		Name: "<root>",
		Fields: []*dparser.Field{
			{Columns: []*dparser.FieldColumn{{Name: "name", Type: dparser.FieldReference}}},
			{Columns: []*dparser.FieldColumn{{ReferenceName: "<field0>", Type: dparser.FieldSubquery}}},
		},
		FieldScopes: []*dparser.StmtScope{
			{
				Name: "<field0>",
				Fields: []*dparser.Field{
					{Columns: []*dparser.FieldColumn{{Type: dparser.FieldStar}}},
					{Columns: []*dparser.FieldColumn{
						{Name: "user_id", Type: dparser.FieldCondition},
						{Table: "users", Name: "id", Type: dparser.FieldCondition},
					}},
				},
				Tables: []*dparser.Table{
					{Name: "tasks"},
				},
			},
		},
		Tables: []*dparser.Table{
			{Name: "users"},
		},
	}},
}
View Source
var PostgresSubqueryWithInData = &postgresData{
	SQL: "SELECT user_id IN (SELECT user_id FROM tasks) FROM users",
	Scopes: []*dparser.StmtScope{{
		Name: "<root>",
		Fields: []*dparser.Field{
			{Columns: []*dparser.FieldColumn{
				{Name: "user_id", Type: dparser.FieldReference},
				{ReferenceName: "<field0>", Type: dparser.FieldSubquery},
			}},
		},
		FieldScopes: []*dparser.StmtScope{
			{
				Name: "<field0>",
				Fields: []*dparser.Field{
					{Columns: []*dparser.FieldColumn{{Name: "user_id", Type: dparser.FieldReference}}},
				},
				Tables: []*dparser.Table{
					{Name: "tasks"},
				},
			},
		},
		Tables: []*dparser.Table{
			{Name: "users"},
		},
	}},
}
View Source
var PostgresSubqueryWithLateralJoinData = &postgresData{
	SQL: `
SELECT description
FROM
	(SELECT id FROM users) AS u
	LEFT OUTER JOIN LATERAL (SELECT user_id, description FROM tasks WHERE user_id = u.id) AS t ON u.id = t.user_id
`,
	Scopes: []*dparser.StmtScope{
		{
			Name: "<root>",
			Fields: []*dparser.Field{
				{Columns: []*dparser.FieldColumn{
					{Name: "description", Type: dparser.FieldReference},
				}},
				{Columns: []*dparser.FieldColumn{
					{Table: "u", Name: "id", Type: dparser.FieldCondition},
					{Table: "t", Name: "user_id", Type: dparser.FieldCondition},
				}},
			},
			Tables: []*dparser.Table{
				{Name: "<select0>", AsName: "u"},
				{Name: "<select1>", AsName: "t", IsLateral: true},
			},
			SubScopes: []*dparser.StmtScope{
				{
					Name: "<select0>",
					Fields: []*dparser.Field{
						{Columns: []*dparser.FieldColumn{{Name: "id", Type: dparser.FieldReference}}},
					},
					Tables: []*dparser.Table{
						{Name: "users"},
					},
				},
				{
					Name: "<select1>",
					Fields: []*dparser.Field{
						{Columns: []*dparser.FieldColumn{{Name: "user_id", Type: dparser.FieldReference}}},
						{Columns: []*dparser.FieldColumn{{Name: "description", Type: dparser.FieldReference}}},
						{Columns: []*dparser.FieldColumn{
							{Name: "user_id", Type: dparser.FieldCondition},
							{Table: "u", Name: "id", Type: dparser.FieldCondition},
						}},
					},
					Tables: []*dparser.Table{
						{Name: "tasks"},
					},
				},
			},
		},
	},
}
View Source
var PostgresSubqueryWithLateralObjectReferenceData = &postgresData{
	SQL: `
SELECT b
FROM (SELECT name FROM users) AS a
	LEFT JOIN LATERAL (SELECT a) AS b ON (TRUE)
`,
	Scopes: []*dparser.StmtScope{
		{
			Name: "<root>",
			Fields: []*dparser.Field{
				{Columns: []*dparser.FieldColumn{
					{Name: "b", Type: dparser.FieldReference},
				}},
			},
			Tables: []*dparser.Table{
				{Name: "<select0>", AsName: "a"},
				{Name: "<select1>", AsName: "b", IsLateral: true},
			},
			SubScopes: []*dparser.StmtScope{
				{
					Name: "<select0>",
					Fields: []*dparser.Field{
						{Columns: []*dparser.FieldColumn{{Name: "name", Type: dparser.FieldReference}}},
					},
					Tables: []*dparser.Table{
						{Name: "users"},
					},
				},
				{
					Name: "<select1>",
					Fields: []*dparser.Field{
						{Columns: []*dparser.FieldColumn{{Name: "a", Type: dparser.FieldReference}}},
					},
				},
			},
		},
	},
}

Functions

This section is empty.

Types

This section is empty.

Jump to

Keyboard shortcuts

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