Giter Club home page Giter Club logo

Comments (8)

abdonrd avatar abdonrd commented on June 6, 2024 1

Right!

With this query:

{
  battles {
    id
    videos_func { count }
  }
}

The response is:

{
  "errors": [
    {
      "message": "An unexpected error occurred.",
      "extensions": {
        "code": "INTERNAL_SERVER_ERROR"
      }
    }
  ]
}

And the error is:

ERROR: select "battles"."id", (select count(*) from "videos" as "kaggh" left join "matchdays" as "jjvhv" on "videos"."matchday" = "jjvhv"."id" left join "battles" as "xcswd" on "videos"."battle" = "xcswd"."id" where "kaggh"."battle" = "battles"."id" and ((("jjvhv"."status" = 'published' or "xcswd"."status" = 'published')))) AS "videos_count" from "battles" where (("battles"."status" = $1)) order by "battles"."id" asc limit $2 - invalid reference to FROM-clause entry for table "videos"

From:

ERROR: select "battles"."id", (select count(*) from "videos" as "kaggh" left join "matchdays" as "jjvhv" on "videos"."matchday" = "jjvhv"."id" left join "battles" as "xcswd" on "videos"."battle" = "xcswd"."id" where "kaggh"."battle" = "battles"."id" and ((("jjvhv"."status" = 'published' or "xcswd"."status" = 'published')))) AS "videos_count" from "battles" where (("battles"."status" = $1)) order by "battles"."id" asc limit $2 - invalid reference to FROM-clause entry for table "videos"
  err: {
    "type": "GraphQLError",
    "message": "select \"battles\".\"id\", (select count(*) from \"videos\" as \"kaggh\" left join \"matchdays\" as \"jjvhv\" on \"videos\".\"matchday\" = \"jjvhv\".\"id\" left join \"battles\" as \"xcswd\" on \"videos\".\"battle\" = \"xcswd\".\"id\" where \"kaggh\".\"battle\" = \"battles\".\"id\" and (((\"jjvhv\".\"status\" = 'published' or \"xcswd\".\"status\" = 'published')))) AS \"videos_count\" from \"battles\" where ((\"battles\".\"status\" = $1)) order by \"battles\".\"id\" asc limit $2 - invalid reference to FROM-clause entry for table \"videos\"",
    "stack":
      error: select "battles"."id", (select count(*) from "videos" as "kaggh" left join "matchdays" as "jjvhv" on "videos"."matchday" = "jjvhv"."id" left join "battles" as "xcswd" on "videos"."battle" = "xcswd"."id" where "kaggh"."battle" = "battles"."id" and ((("jjvhv"."status" = 'published' or "xcswd"."status" = 'published')))) AS "videos_count" from "battles" where (("battles"."status" = $1)) order by "battles"."id" asc limit $2 - invalid reference to FROM-clause entry for table "videos"
        at Parser.parseErrorMessage (/directus/node_modules/.pnpm/[email protected]/node_modules/pg-protocol/dist/parser.js:283:98)
        at Parser.handlePacket (/directus/node_modules/.pnpm/[email protected]/node_modules/pg-protocol/dist/parser.js:122:29)
        at Parser.parse (/directus/node_modules/.pnpm/[email protected]/node_modules/pg-protocol/dist/parser.js:35:38)
        at Socket.<anonymous> (/directus/node_modules/.pnpm/[email protected]/node_modules/pg-protocol/dist/index.js:11:42)
        at Socket.emit (node:events:517:28)
        at addChunk (node:internal/streams/readable:368:12)
        at readableAddChunk (node:internal/streams/readable:341:9)
        at Readable.push (node:internal/streams/readable:278:10)
        at Pipe.onStreamRead (node:internal/stream_base_commons:190:23)
    "path": [
      "battles"
    ],
    "locations": [
      {
        "line": 2,
        "column": 3
      }
    ],
    "extensions": {}
  }

Using PostgreSQL v15.

And the collection is (both matchday & video are M2O):

Screenshot 2024-05-09 at 7 03 21 AM

from directus.

abdonrd avatar abdonrd commented on June 6, 2024 1

Yes, no custom hooks / flows related to this query.

from directus.

hanneskuettner avatar hanneskuettner commented on June 6, 2024 1

The missing piece to reproducing this were the Item Permissions for the videos collection. With this filter I can reproduce the error. And this looks like a regression caused in #22297.

{
	"_and": [{
		"_or": [{
			"battle": {
				"status": {
					"_eq": "published"
				}
			}
		}, {
			"matchday": {
				"status": {
					"_eq": "published"
				}
			}
		}]
	}]
}

from directus.

abdonrd avatar abdonrd commented on June 6, 2024 1

Right, in my matchdays and battle collections I have the status field. And in the permission I required to published.

The videos has no status field.

from directus.

hanneskuettner avatar hanneskuettner commented on June 6, 2024

Heya, I've tried replicating this in v10.11.0 on my end, but so far my GraphQL queries seem to work just find for m2m, m2a and o2m relations.

Can you please share your collection setup, DB vendor and maybe even a stack trace you might be seeing in your Directus logs?

from directus.

hanneskuettner avatar hanneskuettner commented on June 6, 2024

Are you seeing this in the app or when querying the API? Because the DB query looks like some additional filters are applied?
It would help if you could share the whole request. Thank you!

from directus.

abdonrd avatar abdonrd commented on June 6, 2024

Just with the query:

POST /graphql

Payload:

{"query":"{\n  battles {\n    id\n    videos_func { count }\n  }\n}","variables":null}

from directus.

hanneskuettner avatar hanneskuettner commented on June 6, 2024

Just to double check, you're not using any custom hooks or flows that might transform that query before it hits the DB?

from directus.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.