1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.sqlfederation.optimizer.planner.util;
19
20 import lombok.AccessLevel;
21 import lombok.NoArgsConstructor;
22 import org.apache.calcite.schema.SchemaPlus;
23 import org.apache.calcite.schema.impl.ScalarFunctionImpl;
24 import org.apache.shardingsphere.infra.autogen.version.ShardingSphereVersion;
25
26
27
28
29 @NoArgsConstructor(access = AccessLevel.PRIVATE)
30 public final class SQLFederationFunctionUtils {
31
32 private static final int DEFAULT_PASSWORD_DEADLINE = 90;
33
34 private static final int DEFAULT_PASSWORD_NOTIFY_TIME = 7;
35
36
37
38
39
40
41
42 public static void registryUserDefinedFunction(final String schemaName, final SchemaPlus schemaPlus) {
43 schemaPlus.add("version", ScalarFunctionImpl.create(SQLFederationFunctionUtils.class, "version"));
44 schemaPlus.add("opengauss_version", ScalarFunctionImpl.create(SQLFederationFunctionUtils.class, "openGaussVersion"));
45 schemaPlus.add("gs_password_deadline", ScalarFunctionImpl.create(SQLFederationFunctionUtils.class, "gsPasswordDeadline"));
46 schemaPlus.add("intervaltonum", ScalarFunctionImpl.create(SQLFederationFunctionUtils.class, "intervalToNum"));
47 schemaPlus.add("gs_password_notifyTime", ScalarFunctionImpl.create(SQLFederationFunctionUtils.class, "gsPasswordNotifyTime"));
48 schemaPlus.add("pg_catalog.gs_password_deadline", ScalarFunctionImpl.create(SQLFederationFunctionUtils.class, "gsPasswordDeadline"));
49 schemaPlus.add("pg_catalog.intervaltonum", ScalarFunctionImpl.create(SQLFederationFunctionUtils.class, "intervalToNum"));
50 schemaPlus.add("pg_catalog.gs_password_notifyTime", ScalarFunctionImpl.create(SQLFederationFunctionUtils.class, "gsPasswordNotifyTime"));
51 if ("pg_catalog".equalsIgnoreCase(schemaName)) {
52 schemaPlus.add("pg_catalog.pg_table_is_visible", ScalarFunctionImpl.create(SQLFederationFunctionUtils.class, "pgTableIsVisible"));
53 schemaPlus.add("pg_catalog.pg_get_userbyid", ScalarFunctionImpl.create(SQLFederationFunctionUtils.class, "pgGetUserById"));
54 }
55 }
56
57
58
59
60
61
62
63 @SuppressWarnings("unused")
64 public static boolean pgTableIsVisible(final Long oid) {
65 return true;
66 }
67
68
69
70
71
72
73
74 @SuppressWarnings("unused")
75 public static String pgGetUserById(final Long oid) {
76 return "mock user";
77 }
78
79
80
81
82
83
84 public static String version() {
85 return "ShardingSphere-Proxy " + ShardingSphereVersion.VERSION + ("-" + ShardingSphereVersion.BUILD_GIT_COMMIT_ID_ABBREV) + (ShardingSphereVersion.BUILD_GIT_DIRTY ? "-dirty" : "");
86 }
87
88
89
90
91
92
93 @SuppressWarnings("unused")
94 public static String openGaussVersion() {
95 return ShardingSphereVersion.VERSION;
96 }
97
98
99
100
101
102
103
104 @SuppressWarnings("unused")
105 public static int gsPasswordDeadline() {
106 return DEFAULT_PASSWORD_DEADLINE;
107 }
108
109
110
111
112
113
114
115
116 @SuppressWarnings("unused")
117 public static int intervalToNum(final int result) {
118 return result;
119 }
120
121
122
123
124
125
126 @SuppressWarnings("unused")
127 public static int gsPasswordNotifyTime() {
128 return DEFAULT_PASSWORD_NOTIFY_TIME;
129 }
130 }