mirror of
https://github.com/maxkratz/edgedb.git
synced 2024-09-16 18:59:05 +00:00
Add more 3.0 dump tests and fix reflected name of triggers (#5420)
The *first* instance of triggers in the schema got it right, and then
d4a5a1676e
factored out duplicated name
handling but forgot to use the factored out macinery in triggers!
This commit is contained in:
parent
b766ea3b1d
commit
c649e0698f
6 changed files with 62 additions and 7 deletions
|
@ -68,10 +68,10 @@ Introspection of a trigger named ``log_insert`` on the ``User`` type:
|
|||
... subject: {
|
||||
... name
|
||||
... }
|
||||
... } filter .name = '__::log_insert';
|
||||
... } filter .name = 'log_insert';
|
||||
{
|
||||
schema::Trigger {
|
||||
name: '__::log_insert',
|
||||
name: 'log_insert',
|
||||
kinds: {Insert},
|
||||
timing: After,
|
||||
scope: Each,
|
||||
|
@ -90,4 +90,3 @@ Introspection of a trigger named ``log_insert`` on the ``User`` type:
|
|||
* - :ref:`Schema > Triggers <ref_datamodel_triggers>`
|
||||
* - :ref:`SDL > Triggers <ref_eql_sdl_triggers>`
|
||||
* - :ref:`DDL > Triggers <ref_eql_ddl_triggers>`
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ from edb.common import verutils
|
|||
|
||||
|
||||
# Increment this whenever the database layout or stdlib changes.
|
||||
EDGEDB_CATALOG_VERSION = 2023_05_04_00_01
|
||||
EDGEDB_CATALOG_VERSION = 2023_05_04_00_02
|
||||
EDGEDB_MAJOR_VERSION = 3
|
||||
|
||||
|
||||
|
|
|
@ -38,7 +38,7 @@ from . import types as s_types
|
|||
|
||||
|
||||
class Rewrite(
|
||||
referencing.ReferencedInheritingObject,
|
||||
referencing.NamedReferencedInheritingObject,
|
||||
so.InheritingObject, # Help reflection figure out the right db MRO
|
||||
s_anno.AnnotationSubject,
|
||||
qlkind=qltypes.SchemaObjectClass.REWRITE,
|
||||
|
@ -89,7 +89,7 @@ class RewriteSubjectCommand(
|
|||
|
||||
|
||||
class RewriteCommand(
|
||||
referencing.ReferencedInheritingObjectCommand[Rewrite],
|
||||
referencing.NamedReferencedInheritingObjectCommand[Rewrite],
|
||||
s_anno.AnnotationSubjectCommand[Rewrite],
|
||||
context_class=RewriteCommandContext,
|
||||
referrer_context_class=RewriteSubjectCommandContext,
|
||||
|
|
|
@ -41,7 +41,7 @@ if TYPE_CHECKING:
|
|||
|
||||
|
||||
class Trigger(
|
||||
referencing.ReferencedInheritingObject,
|
||||
referencing.NamedReferencedInheritingObject,
|
||||
so.InheritingObject, # Help reflection figure out the right db MRO
|
||||
qlkind=qltypes.SchemaObjectClass.TRIGGER,
|
||||
data_safe=True,
|
||||
|
|
|
@ -24,3 +24,23 @@ ONTO m1nnh3uhlwn5vfe7dfhyyxxjafsxniljyuzov6avzqeyddw2qpkw7q {
|
|||
};
|
||||
|
||||
CREATE TYPE default::Test2;
|
||||
|
||||
create type Log {
|
||||
create property message -> str;
|
||||
create property timestamp -> float64 {
|
||||
create rewrite insert, update using (random())
|
||||
};
|
||||
create access policy whatever allow all;
|
||||
create access policy whatever_no deny insert using (false) {
|
||||
set errmessage := "aaaaaa";
|
||||
};
|
||||
};
|
||||
|
||||
create type Foo {
|
||||
create property name -> str;
|
||||
create trigger log after insert for each do (
|
||||
insert Log {
|
||||
message := __new__.name
|
||||
}
|
||||
);
|
||||
};
|
||||
|
|
|
@ -59,6 +59,7 @@ class DumpTestCaseMixin:
|
|||
r'''
|
||||
select schema::Migration { script, message, generated_by }
|
||||
order by exists .parents then exists .parents.parents
|
||||
limit 3
|
||||
''',
|
||||
[
|
||||
{"message": None, "generated_by": None},
|
||||
|
@ -67,6 +68,41 @@ class DumpTestCaseMixin:
|
|||
],
|
||||
)
|
||||
|
||||
await self.assert_query_result(
|
||||
r'''
|
||||
select schema::Trigger {
|
||||
name, scope, kinds, sname := .subject.name
|
||||
};
|
||||
''',
|
||||
[
|
||||
{
|
||||
"name": "log",
|
||||
"scope": "Each",
|
||||
"kinds": ["Insert"],
|
||||
"sname": "default::Foo"
|
||||
}
|
||||
]
|
||||
)
|
||||
await self.assert_query_result(
|
||||
r'''
|
||||
select schema::Rewrite {
|
||||
sname := .subject.source.name ++ "." ++ .subject.name,
|
||||
name,
|
||||
};
|
||||
''',
|
||||
tb.bag([
|
||||
{"sname": "default::Log.timestamp", "name": "Insert"},
|
||||
{"sname": "default::Log.timestamp", "name": "Update"},
|
||||
]),
|
||||
)
|
||||
await self.assert_query_result(
|
||||
r'''
|
||||
select schema::AccessPolicy { name, errmessage }
|
||||
filter .name = 'whatever_no';
|
||||
''',
|
||||
[{"name": "whatever_no", "errmessage": "aaaaaa"}],
|
||||
)
|
||||
|
||||
|
||||
class TestDumpV3(tb.StableDumpTestCase, DumpTestCaseMixin):
|
||||
DEFAULT_MODULE = 'test'
|
||||
|
|
Loading…
Reference in a new issue