cube-js / cube

📊 Cube — The Semantic Layer for Building Data Applications
https://cube.dev
Other
17.85k stars 1.77k forks source link

Nullable TimeDimension creates incorrect GraphQL errors #6972

Open iiq374 opened 1 year ago

iiq374 commented 1 year ago

Describe the bug Where a date or datetime is in GQL whenever that is an optional field an error is returned EG: Message: Cannot return null for non-nullable field TimeDimension.day It seems to be because although the TimeDimension is correctly created as optional in the GQL Schema, the properties are not - so querying for the property creates the error.

To Reproduce Steps to reproduce the behavior: Create a cube with a time dimension:

managementStartDate: {
      sql: `management_start_date`,
      type: `time`,
    },

Query that field via GQL interface: managementStartDate { day }

Receive errors per null field.

Expected behavior Where the underlying data is null there should be no error included in the errors array.

Screenshots image

Minimally reproducible Cube Schema In case your bug report is data modelling related please put your minimally reproducible Cube Schema here. You can use selects without tables in order to achieve that as follows.

cube(`Orders`, {
  sql: `
  select 1 as id, null as shippedDate
  UNION ALL
  select 2 as id, '2023-07-01 12:00:00.000' as shippedDate
  `,
  measures: {
    count: {
      type: `count`,
    },
  },
  dimensions: {
    shippedDate: {
      sql: `shippedDate`,
      type: `time`,
    },
  },
});

Version: 0.33.39

Additional context

github-actions[bot] commented 1 year ago

If you are interested in working on this issue, please leave a comment below and we will be happy to assign the issue to you. If this is the first time you are contributing a Pull Request to Cube.js, please check our contribution guidelines. You can also post any questions while contributing in the #contributors channel in the Cube.js Slack.

igorlukanin commented 5 days ago

Still reproduces on Cube v0.36.7:

Screenshot 2024-10-09 at 00 55 44
kevinleeTCA commented 4 days ago

Yes, confirmed this is still happening on latest version Cube v0.36.7: