Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitdbcd051

Browse files
author
Nikita Glukhov
committed
Add compression methods
1 parentc80da1c commitdbcd051

File tree

25 files changed

+554
-10
lines changed

25 files changed

+554
-10
lines changed

‎src/backend/catalog/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ POSTGRES_BKI_SRCS = $(addprefix $(top_srcdir)/src/include/catalog/,\
4545
pg_default_acl.h pg_init_privs.h pg_seclabel.h pg_shseclabel.h \
4646
pg_collation.h pg_partitioned_table.h pg_range.h pg_transform.h \
4747
pg_sequence.h pg_publication.h pg_publication_rel.h pg_subscription.h \
48-
pg_subscription_rel.h toasting.h indexing.h \
48+
pg_subscription_rel.hpg_compression.htoasting.h indexing.h \
4949
toasting.h indexing.h \
5050
)
5151

‎src/backend/catalog/aclchk.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3340,6 +3340,8 @@ static const char *const no_priv_msg[MAX_ACL_KIND] =
33403340
gettext_noop("permission denied for publication %s"),
33413341
/* ACL_KIND_SUBSCRIPTION */
33423342
gettext_noop("permission denied for subscription %s"),
3343+
/* ACL_KIND_COMPRESSION_METHOD */
3344+
gettext_noop("permission denied for compression method %s"),
33433345
};
33443346

33453347
staticconstchar*constnot_owner_msg[MAX_ACL_KIND]=

‎src/backend/catalog/dependency.c

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include"catalog/pg_cast.h"
2929
#include"catalog/pg_collation.h"
3030
#include"catalog/pg_collation_fn.h"
31+
#include"catalog/pg_compression.h"
3132
#include"catalog/pg_constraint.h"
3233
#include"catalog/pg_constraint_fn.h"
3334
#include"catalog/pg_conversion.h"
@@ -173,7 +174,8 @@ static const Oid object_classes[] = {
173174
PublicationRelationId,/* OCLASS_PUBLICATION */
174175
PublicationRelRelationId,/* OCLASS_PUBLICATION_REL */
175176
SubscriptionRelationId,/* OCLASS_SUBSCRIPTION */
176-
TransformRelationId/* OCLASS_TRANSFORM */
177+
TransformRelationId,/* OCLASS_TRANSFORM */
178+
CompressionMethodRelationId/* OCLASS_COMPRESSION_METHOD */
177179
};
178180

179181

@@ -1269,6 +1271,10 @@ doDeletion(const ObjectAddress *object, int flags)
12691271
RemoveStatisticsById(object->objectId);
12701272
break;
12711273

1274+
caseOCLASS_COMPRESSION_METHOD:
1275+
RemoveCompressionMethodById(object->objectId);
1276+
break;
1277+
12721278
default:
12731279
elog(ERROR,"unrecognized object class: %u",
12741280
object->classId);
@@ -2446,6 +2452,9 @@ getObjectClass(const ObjectAddress *object)
24462452

24472453
caseTransformRelationId:
24482454
returnOCLASS_TRANSFORM;
2455+
2456+
caseCompressionMethodRelationId:
2457+
returnOCLASS_COMPRESSION_METHOD;
24492458
}
24502459

24512460
/* shouldn't get here */

‎src/backend/catalog/objectaddress.c

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include"catalog/pg_default_acl.h"
3030
#include"catalog/pg_event_trigger.h"
3131
#include"catalog/pg_collation.h"
32+
#include"catalog/pg_compression.h"
3233
#include"catalog/pg_constraint.h"
3334
#include"catalog/pg_constraint_fn.h"
3435
#include"catalog/pg_conversion.h"
@@ -150,6 +151,18 @@ static const ObjectPropertyType ObjectProperty[] =
150151
ACL_KIND_COLLATION,
151152
true
152153
},
154+
{
155+
CompressionMethodRelationId,
156+
CompressionMethodOidIndexId,
157+
COMPRESSIONMETHODOID,
158+
COMPRESSIONMETHODNAME,
159+
Anum_pg_compression_cmname,
160+
InvalidAttrNumber,
161+
InvalidAttrNumber,
162+
InvalidAttrNumber,
163+
-1,
164+
true
165+
},
153166
{
154167
ConstraintRelationId,
155168
ConstraintOidIndexId,
@@ -713,6 +726,10 @@ static const struct object_type_map
713726
/* OBJECT_STATISTIC_EXT */
714727
{
715728
"statistics",OBJECT_STATISTIC_EXT
729+
},
730+
/* OCLASS_COMPRESSION_METHOD */
731+
{
732+
"compression method",OBJECT_COMPRESSION_METHOD
716733
}
717734
};
718735

@@ -877,6 +894,7 @@ get_object_address(ObjectType objtype, Node *object,
877894
caseOBJECT_ACCESS_METHOD:
878895
caseOBJECT_PUBLICATION:
879896
caseOBJECT_SUBSCRIPTION:
897+
caseOBJECT_COMPRESSION_METHOD:
880898
address=get_object_address_unqualified(objtype,
881899
(Value*)object,missing_ok);
882900
break;
@@ -1183,6 +1201,11 @@ get_object_address_unqualified(ObjectType objtype,
11831201
address.objectId=get_subscription_oid(name,missing_ok);
11841202
address.objectSubId=0;
11851203
break;
1204+
caseOBJECT_COMPRESSION_METHOD:
1205+
address.classId=CompressionMethodRelationId;
1206+
address.objectId=get_compression_method_oid(name,missing_ok);
1207+
address.objectSubId=0;
1208+
break;
11861209
default:
11871210
elog(ERROR,"unrecognized objtype: %d", (int)objtype);
11881211
/* placate compiler, which doesn't know elog won't return */
@@ -2135,6 +2158,7 @@ pg_get_object_address(PG_FUNCTION_ARGS)
21352158
caseOBJECT_SCHEMA:
21362159
caseOBJECT_SUBSCRIPTION:
21372160
caseOBJECT_TABLESPACE:
2161+
caseOBJECT_COMPRESSION_METHOD:
21382162
if (list_length(name)!=1)
21392163
ereport(ERROR,
21402164
(errcode(ERRCODE_INVALID_PARAMETER_VALUE),
@@ -2391,6 +2415,7 @@ check_object_ownership(Oid roleid, ObjectType objtype, ObjectAddress address,
23912415
caseOBJECT_TSPARSER:
23922416
caseOBJECT_TSTEMPLATE:
23932417
caseOBJECT_ACCESS_METHOD:
2418+
caseOBJECT_COMPRESSION_METHOD:
23942419
/* We treat these object types as being owned by superusers */
23952420
if (!superuser_arg(roleid))
23962421
ereport(ERROR,
@@ -3392,6 +3417,17 @@ getObjectDescription(const ObjectAddress *object)
33923417
{
33933418
appendStringInfo(&buffer,_("subscription %s"),
33943419
get_subscription_name(object->objectId));
3420+
break;
3421+
}
3422+
3423+
caseOCLASS_COMPRESSION_METHOD:
3424+
{
3425+
char*name=get_compression_method_name(object->objectId);
3426+
if (!name)
3427+
elog(ERROR,"cache lookup failed for compression method %u",
3428+
object->objectId);
3429+
appendStringInfo(&buffer,_("compression method %s"),name);
3430+
pfree(name);
33953431
break;
33963432
}
33973433

@@ -3897,6 +3933,10 @@ getObjectTypeDescription(const ObjectAddress *object)
38973933
appendStringInfoString(&buffer,"statistics");
38983934
break;
38993935

3936+
caseOCLASS_COMPRESSION_METHOD:
3937+
appendStringInfoString(&buffer,"compression method");
3938+
break;
3939+
39003940
default:
39013941
appendStringInfo(&buffer,"unrecognized %u",object->classId);
39023942
break;
@@ -4137,6 +4177,20 @@ getObjectIdentityParts(const ObjectAddress *object,
41374177
break;
41384178
}
41394179

4180+
caseOCLASS_COMPRESSION_METHOD:
4181+
{
4182+
char*cmname=get_compression_method_name(object->objectId);
4183+
if (!cmname)
4184+
elog(ERROR,"cache lookup failed for compression method %u",
4185+
object->objectId);
4186+
appendStringInfoString(&buffer,quote_identifier(cmname));
4187+
if (objname)
4188+
*objname=list_make1(cmname);
4189+
else
4190+
pfree(cmname);
4191+
break;
4192+
}
4193+
41404194
caseOCLASS_CONSTRAINT:
41414195
{
41424196
HeapTupleconTup;

‎src/backend/commands/Makefile

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ top_builddir = ../../..
1313
include$(top_builddir)/src/Makefile.global
1414

1515
OBJS = amcmds.o aggregatecmds.o alter.o analyze.o async.o cluster.o comment.o\
16-
collationcmds.oconstraint.oconversioncmds.ocopy.ocreateas.o\
17-
dbcommands.o define.o discard.o dropcmds.o\
16+
collationcmds.ocompressioncmds.oconstraint.oconversioncmds.ocopy.o\
17+
createas.odbcommands.o define.o discard.o dropcmds.o\
1818
event_trigger.o explain.o extension.o foreigncmds.o functioncmds.o\
1919
indexcmds.o lockcmds.o matview.o operatorcmds.o opclasscmds.o\
2020
policy.o portalcmds.o prepare.o proclang.o publicationcmds.o\

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp