Unknown filter operator OPERATOR_UNSPECIFIED when working with Dates in v3

This query is throwing an error

const result: any = await myCollection.query.nearText([textStr], {
        returnProperties: ['text', 'id'],
        returnMetadata: ['distance'],
        filters: myCollection.filter.byProperty('effectiveSince').isNull(true),
        limit: 1,
      });

The effectiveSince is of type Date.
I am using ^3.0.0-beta.23
The error I am getting back from Weaviate is

unknown filter operator OPERATOR_UNSPECIFIED

How do I fix it?

Hi @OmerM,

This is a bug.
We will fix it with the next RC release.
I hope we can have the fix ready by the end of today.

When RC2 is ready, just update to ^3.0.0-rc.2.

Thanks. Will keep an eye on it and get back to you on how it works for me.

Hi @sebawita

Wanted to check in with you on how this is looking. I tried updating the node package but I am getting

No matching version found for weaviate-client@^3.0.0-rc.2.

Hey @OmerM,

This is taking a bit longer than expected.
We will try to publish the fix early next week.
Apologies for the delay :pray:

Hi @OmerM! I’ve released the v3.0.0-rc.3 image that should contain this fix, amongst other things. I hope this image resolves your issue, cheers!

Hi @tsmith023
I am seeing this error with the most recent build. Interestingly enough I am using the weaviate REST endpoint :

WeaviateQueryError: Query call with protocol gRPC failed with message: /weaviate.v1.Weaviate/Search UNKNOWN: extract params: unknown value type <nil>

To debug it i simplified my query and using a very simple filter.

This does not work.

filters: Filters.and(
          myCollection.filter.byProperty('companyId').equal(companyId),
             myCollection.filter.byProperty('effectiveDate').isNull(true),
)

vs

This works

filters: Filters.and(
          myCollection.filter.byProperty('companyId').equal(companyId),
          myCollection.filter.byProperty('companyId').equal(companyId),
)

here is the definition of effectiveDate

name: 'effectiveDate',
      dataType: ['date'],
      description: 'Date',
      vectorizer : 'none'

am I not able to check for null date on weaviate or is this a bug?

Additional information

Further down is how I am instantiating my client and here is my env variable
WEAVIATE_END_POINT=https://blee-hlrgx7sy.weaviate.network

const client: WeaviateClient = await weaviate.connectToWCS(process.env.WEAVIATE_END_POINT!, {
    authCredentials: new weaviate.ApiKey(process.env.WEAVIATE_API_KEY!),
    headers: {
      'X-OpenAI-Api-Key': process.env.OPENAI_API_KEY!, // Replace with your inference API key
    },
  });

Hi @OmerM, I am sadly not able to replicate this error with v1.23.13, v1.24.14, or v1.25.1 and the following code using the v3.0.0-rc.3 version:

const collection = await client.collections
  .create({
    name: 'MyCollection',
    invertedIndex: {
      indexNullState: true,
    },
    properties: [
      {
        name: 'name',
        dataType: 'text',
      },
      {
        name: 'location',
        dataType: 'geoCoordinates',
      },
      {
        name: 'date',
        dataType: 'date'
      }
    ],
    vectorizer: {
      name: 'text2vec-contextionary',
      config: {}
    },
  })
  .then(() =>
    collection.data.insertMany([
      {
        name: 'Tim',
        location: {
          latitude: 52.52,
          longitude: 13.405,
        },
        date: new Date('2021-01-01T00:00:00Z')
      },
      {
        name: 'Tom',
        location: {
          latitude: 53.55,
          longitude: 10.0,
        },
      },
    ]);

const res = await collection.query.nearText(['Tom'], {
  filters: Filters.and(
    collection.filter.byProperty('date').isNull(true),
    collection.filter.byProperty('name').equal('Tom')
  )
});
expect(res.objects.length).toEqual(1);
expect(res.objects[0].properties.name).toEqual('Tom');

Is there potentially something else in your collection configuration that might be off? Which Weaviate version is your cluster?

@tsmith023 I am currently on a sandbox cluster:
version is 1.24.10
I don’t have any proprietary data on the server yet, so I would be able to give you access to my cluster. Would that help?

@tsmith023 / @sebawita What is the best way to investigate this issue?