DML- und CTAS-Befehle: Möglicherweise falsche Ergebnisse, wenn die Eigenschaft RELY gesetzt ist (ausstehend)

Achtung

Diese Verhaltensänderung ist in Bundle 2025_03 enthalten.

Den aktuellen Status des Bundles finden Sie unter Bundle-Verlauf.

Wenn dieses Verhaltensänderungs-Bundle aktiviert ist, kann eine Optimierung für bestimmte DML- und CTAS-Anweisungen zu falschen Ergebnissen führen, wenn die RELY-Eigenschaft in der Zieltabelle gesetzt ist:

Vor der Änderung:

DML- und CTAS-Anweisungen auf Tabellen mit UNIQUE-und PRIMARY KEY-Beschränkungen qualifizieren sich nicht für eine Optimierung, die auf die Operationen DISTINCT und GROUP BY angewendet wird. (Der Optimierer entfernt überflüssige Gruppierungsspalten.)

Da die betreffende Optimierung derzeit nur auf SELECT-Anweisungen angewendet wird, besteht kein Risiko, dass falsche Daten eingefügt werden, wenn die Eigenschaft RELY für eine Einschränkung festgelegt ist und eine Verletzung der referentiellen Integrität auftritt.

Nach der Änderung:

DML- und CTAS-Anweisungen auf Tabellen mit UNIQUE- und PRIMARY KEY-Einschränkungen qualifizieren sich jetzt für die gleiche Optimierung, die auch auf SELECT-Anweisungen angewendet wird.

Wenn die Eigenschaft RELY für eine Einschränkung festgelegt ist und eine Verletzung der referentiellen Integrität auftritt, werden möglicherweise falsche Daten eingefügt.

Hintergrundinformationen

Snowflake erzwingt keine referentielle Integrität auf Standardtabellen, unabhängig von den Einschränkungen und Eigenschaften, die Sie definieren. (Die Ausnahme von dieser Regel sind Hybridtabellen, für die bestimmte Einschränkungen erforderlich sind und erzwungen werden)

Die Einschränkungseigenschaft RELY erklärt, dass Sie davon ausgehen, dass Ihre Tabellendaten über referentielle Integrität verfügen (oder dass eine andere Anwendung diese erzwingt, bevor die Daten in Snowflake geladen werden). Die Eigenschaft RELY muss explizit festgelegt werden und ist standardmäßig nicht aktiviert. Es ist bereits dokumentiert, dass das Einstellen dieser Eigenschaft zu unbeabsichtigtem Verhalten und/oder unerwarteten Ergebnissen führen kann.

Identifizierung von Tabellen mit der Einschränkungseigenschaft RELY

Um herauszufinden, für welche Tabellen die Eigenschaft RELY für die Einschränkungen PRIMARY KEY oder UNIQUE festgelegt ist, führen Sie diese Abfrage aus:

SELECT table_schema, table_name
  FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
  WHERE RELY ='YES'
    AND (constraint_type = 'PRIMARY KEY' OR constraint_type = 'UNIQUE');
Copy

Ziehen Sie in Erwägung, Beschränkungen zu streichen oder die Eigenschaft RELY nicht einzustellen, wenn Sie Probleme erwarten, wenn die Optimierung in Kraft tritt.

Ref: 1902