lex

package
v0.0.0-...-b8ff010 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 17, 2021 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const ABORT = 57363
View Source
const ACTION = 57364
View Source
const ADD = 57365
View Source
const ADMIN = 57366
View Source
const AFTER = 57367
View Source
const AGGREGATE = 57368
View Source
const ALL = 57369
View Source
const ALTER = 57370
View Source
const ALWAYS = 57371
View Source
const ANALYSE = 57372
View Source
const ANALYZE = 57373
View Source
const AND = 57374
View Source
const AND_AND = 57375
View Source
const ANNOTATE_TYPE = 57377
View Source
const ANY = 57376
View Source
const ARRAY = 57378
View Source
const AS = 57379
View Source
const ASC = 57380
View Source
const ASYMMETRIC = 57381
View Source
const AS_LA = 57818
View Source
const AT = 57382
View Source
const ATTRIBUTE = 57383
View Source
const AUTHORIZATION = 57384
View Source
const AUTOMATIC = 57385
View Source
const BACKUP = 57386
View Source
const BCONST = 57348
View Source
const BEFORE = 57387
View Source
const BEGIN = 57388
View Source
const BETWEEN = 57389
View Source
const BIGINT = 57390
View Source
const BIGSERIAL = 57391
View Source
const BIT = 57392
View Source
const BITCONST = 57349
View Source
const BOOLEAN = 57394
View Source
const BOTH = 57395
View Source
const BUCKET_COUNT = 57393
View Source
const BUNDLE = 57396
View Source
const BY = 57397
View Source
const CACHE = 57398
View Source
const CANCEL = 57399
View Source
const CASCADE = 57400
View Source
const CASE = 57401
View Source
const CAST = 57402
View Source
const CBRT = 57403
View Source
const CHANGEFEED = 57404
View Source
const CHAR = 57405
View Source
const CHARACTER = 57406
View Source
const CHARACTERISTICS = 57407
View Source
const CHECK = 57408
View Source
const CLOSE = 57409
View Source
const CLUSTER = 57410
View Source
const COALESCE = 57411
View Source
const COLLATE = 57412
View Source
const COLLATION = 57413
View Source
const COLUMN = 57414
View Source
const COLUMNS = 57415
View Source
const COMMENT = 57416
View Source
const COMMENTS = 57417
View Source
const COMMIT = 57418
View Source
const COMMITTED = 57419
View Source
const COMPACT = 57420
View Source
const COMPLETE = 57421
View Source
const CONCAT = 57422
View Source
const CONCURRENTLY = 57423
View Source
const CONFIGURATION = 57424
View Source
const CONFIGURATIONS = 57425
View Source
const CONFIGURE = 57426
View Source
const CONFLICT = 57427
View Source
const CONSTRAINT = 57428
View Source
const CONSTRAINTS = 57429
View Source
const CONTAINED_BY = 57820
View Source
const CONTAINS = 57430
View Source
const CONVERSION = 57431
View Source
const COPY = 57432
View Source
const COVERING = 57433
View Source
const CREATE = 57434
View Source
const CREATEROLE = 57435
View Source
const CROSS = 57436
View Source
const CUBE = 57437
View Source
const CURRENT = 57438
View Source
const CURRENT_CATALOG = 57439
View Source
const CURRENT_DATE = 57440
View Source
const CURRENT_ROLE = 57442
View Source
const CURRENT_SCHEMA = 57441
View Source
const CURRENT_TIME = 57443
View Source
const CURRENT_TIMESTAMP = 57444
View Source
const CURRENT_USER = 57445
View Source
const CYCLE = 57446
View Source
const DATA = 57447
View Source
const DATABASE = 57448
View Source
const DATABASES = 57449
View Source
const DATE = 57450
View Source
const DAY = 57451
View Source
const DEALLOCATE = 57456
View Source
const DEC = 57452
View Source
const DECIMAL = 57453
View Source
const DECLARE = 57457
View Source
const DEFAULT = 57454
View Source
const DEFAULTS = 57455
View Source
const DEFERRABLE = 57458
View Source
const DEFERRED = 57459
View Source
const DELETE = 57460
View Source
const DESC = 57461
View Source
const DETACHED = 57462
View Source
const DISCARD = 57463
View Source
const DISTINCT = 57464
View Source
const DO = 57465
View Source
const DOMAIN = 57466
View Source
const DOT_DOT = 57355
View Source
const DOUBLE = 57467
View Source
const DROP = 57468
View Source
const ELSE = 57469
View Source
const ENCODING = 57470
View Source
const ENCRYPTION_PASSPHRASE = 57471
View Source
const END = 57472
View Source
const ENUM = 57473
View Source
const ERROR = 57362
View Source
const ESCAPE = 57474
View Source
const EXCEPT = 57475
View Source
const EXCLUDE = 57476
View Source
const EXCLUDING = 57477
View Source
const EXECUTE = 57479
View Source
const EXECUTION = 57480
View Source
const EXISTS = 57478
View Source
const EXPERIMENTAL = 57481
View Source
const EXPERIMENTAL_AUDIT = 57484
View Source
const EXPERIMENTAL_FINGERPRINTS = 57482
View Source
const EXPERIMENTAL_RELOCATE = 57760
View Source
const EXPERIMENTAL_REPLICA = 57483
View Source
const EXPIRATION = 57485
View Source
const EXPLAIN = 57486
View Source
const EXPORT = 57487
View Source
const EXTENSION = 57488
View Source
const EXTRACT = 57489
View Source
const EXTRACT_DURATION = 57490
View Source
const FALSE = 57491
View Source
const FAMILY = 57492
View Source
const FCONST = 57351
View Source
const FETCH = 57493
View Source
const FETCHTEXT = 57495
View Source
const FETCHTEXT_PATH = 57497
View Source
const FETCHVAL = 57494
View Source
const FETCHVAL_PATH = 57496
View Source
const FILES = 57498
View Source
const FILTER = 57499
View Source
const FIRST = 57500
View Source
const FLOAT = 57501
View Source
const FLOAT4 = 57502
View Source
const FLOAT8 = 57503
View Source
const FLOORDIV = 57504
View Source
const FOLLOWING = 57505
View Source
const FOR = 57506
View Source
const FORCE_INDEX = 57507
View Source
const FOREIGN = 57508
View Source
const FROM = 57509
View Source
const FULL = 57510
View Source
const FUNCTION = 57511
View Source
const GENERATED = 57512
View Source
const GENERATED_ALWAYS = 57819
View Source
const GEOGRAPHY = 57513
View Source
const GEOMETRY = 57514
View Source
const GEOMETRYCOLLECTION = 57515
View Source
const GLOBAL = 57516
View Source
const GRANT = 57517
View Source
const GRANTS = 57518
View Source
const GREATER_EQUALS = 57357
View Source
const GREATEST = 57519
View Source
const GROUP = 57520
View Source
const GROUPING = 57521
View Source
const GROUPS = 57522
View Source
const HASH = 57524
View Source
const HAVING = 57523
View Source
const HELPTOKEN = 57823
View Source
const HIGH = 57525
View Source
const HISTOGRAM = 57526
View Source
const HOUR = 57527
View Source
const ICONST = 57350
View Source
const IDENT = 57346
View Source
const IDENTITY = 57528
View Source
const IF = 57529
View Source
const IFERROR = 57530
View Source
const IFNULL = 57531
View Source
const IGNORE_FOREIGN_KEYS = 57532
View Source
const ILIKE = 57533
View Source
const IMMEDIATE = 57534
View Source
const IMPORT = 57535
View Source
const IN = 57536
View Source
const INCLUDE = 57537
View Source
const INCLUDING = 57538
View Source
const INCREMENT = 57539
View Source
const INCREMENTAL = 57540
View Source
const INDEX = 57544
View Source
const INDEXES = 57545
View Source
const INET = 57541
View Source
const INET_CONTAINED_BY_OR_EQUALS = 57542
View Source
const INET_CONTAINS_OR_EQUALS = 57543
View Source
const INITIALLY = 57548
View Source
const INJECT = 57546
View Source
const INNER = 57549
View Source
const INSERT = 57550
View Source
const INT = 57551
View Source
const INTEGER = 57552
View Source
const INTERLEAVE = 57547
View Source
const INTERSECT = 57553
View Source
const INTERVAL = 57554
View Source
const INTO = 57555
View Source
const INVERTED = 57556
View Source
const IS = 57557
View Source
const ISERROR = 57558
View Source
const ISNULL = 57559
View Source
const ISOLATION = 57560
View Source
const JOB = 57561
View Source
const JOBS = 57562
View Source
const JOIN = 57563
View Source
const JSON = 57564
View Source
const JSONB = 57565
View Source
const JSON_ALL_EXISTS = 57567
View Source
const JSON_SOME_EXISTS = 57566
View Source
const KEY = 57568
View Source
const KEYS = 57569
View Source
const KV = 57570
View Source
const LANGUAGE = 57571
View Source
const LAST = 57572
View Source
const LATERAL = 57573
View Source
const LC_COLLATE = 57575
View Source
const LC_CTYPE = 57574
View Source
const LEADING = 57576
View Source
const LEASE = 57577
View Source
const LEAST = 57578
View Source
const LEFT = 57579
View Source
const LESS = 57580
View Source
const LESS_EQUALS = 57356
View Source
const LEVEL = 57581
View Source
const LIKE = 57582
View Source
const LIMIT = 57583
View Source
const LINESTRING = 57584
View Source
const LIST = 57585
View Source
const LOCAL = 57586
View Source
const LOCALTIME = 57587
View Source
const LOCALTIMESTAMP = 57588
View Source
const LOCKED = 57589
View Source
const LOGIN = 57590
View Source
const LOOKUP = 57591
View Source
const LOW = 57592
View Source
const LSHIFT = 57593
View Source
const MATCH = 57594
View Source
const MATERIALIZED = 57595
View Source
const MAXVALUE = 57598
View Source
const MERGE = 57596
View Source
const MINUTE = 57599
View Source
const MINVALUE = 57597
View Source
const MONTH = 57600
View Source
const MULTILINESTRING = 57601
View Source
const MULTIPOINT = 57602
View Source
const MULTIPOLYGON = 57603
View Source
const NAME = 57605
View Source
const NAMES = 57606
View Source
const NAN = 57604
View Source
const NATURAL = 57607
View Source
const NEVER = 57608
View Source
const NEXT = 57609
View Source
const NO = 57610
View Source
const NOCREATEROLE = 57611
View Source
const NOLOGIN = 57612
View Source
const NONE = 57614
View Source
const NORMAL = 57615
View Source
const NOT = 57616
View Source
const NOTHING = 57617
View Source
const NOTNULL = 57618
View Source
const NOT_EQUALS = 57358
View Source
const NOT_LA = 57816
View Source
const NOT_REGIMATCH = 57361
View Source
const NOT_REGMATCH = 57359
View Source
const NOWAIT = 57619
View Source
const NO_INDEX_JOIN = 57613
View Source
const NULL = 57620
View Source
const NULLIF = 57621
View Source
const NULLS = 57622
View Source
const NUMERIC = 57623
View Source
const OF = 57624
View Source
const OFF = 57625
View Source
const OFFSET = 57626
View Source
const OID = 57627
View Source
const OIDS = 57628
View Source
const OIDVECTOR = 57629
View Source
const ON = 57630
View Source
const ONLY = 57631
View Source
const OPERATOR = 57646
View Source
const OPT = 57632
View Source
const OPTION = 57633
View Source
const OPTIONS = 57634
View Source
const OR = 57635
View Source
const ORDER = 57636
View Source
const ORDINALITY = 57637
View Source
const OTHERS = 57638
View Source
const OUT = 57639
View Source
const OUTER = 57640
View Source
const OVER = 57641
View Source
const OVERLAPS = 57642
View Source
const OVERLAY = 57643
View Source
const OWNED = 57644
View Source
const OWNER = 57645
View Source
const PARENT = 57647
View Source
const PARTIAL = 57648
View Source
const PARTITION = 57649
View Source
const PARTITIONS = 57650
View Source
const PASSWORD = 57651
View Source
const PAUSE = 57652
View Source
const PHYSICAL = 57653
View Source
const PLACEHOLDER = 57352
View Source
const PLACING = 57654
View Source
const PLAN = 57655
View Source
const PLANS = 57656
View Source
const POINT = 57657
View Source
const POLYGON = 57658
View Source
const POSITION = 57659
View Source
const POSTFIXOP = 57821
View Source
const PRECEDING = 57660
View Source
const PRECISION = 57661
View Source
const PREPARE = 57662
View Source
const PRESERVE = 57663
View Source
const PRIMARY = 57664
View Source
const PRIORITY = 57665
View Source
const PROCEDURAL = 57666
View Source
const PUBLIC = 57667
View Source
const PUBLICATION = 57668
View Source
const QUERIES = 57669
View Source
const QUERY = 57670
View Source
const RANGE = 57671
View Source
const RANGES = 57672
View Source
const READ = 57673
View Source
const REAL = 57674
View Source
const RECURRING = 57676
View Source
const RECURSIVE = 57675
View Source
const REF = 57677
View Source
const REFERENCES = 57678
View Source
const REGCLASS = 57679
View Source
const REGIMATCH = 57360
View Source
const REGNAMESPACE = 57682
View Source
const REGPROC = 57680
View Source
const REGPROCEDURE = 57681
View Source
const REGTYPE = 57683
View Source
const REINDEX = 57684
View Source
const RELEASE = 57689
View Source
const REMOVE_PATH = 57685
View Source
const RENAME = 57686
View Source
const REPEATABLE = 57687
View Source
const REPLACE = 57688
View Source
const RESET = 57690
View Source
const RESTORE = 57691
View Source
const RESTRICT = 57692
View Source
const RESUME = 57693
View Source
const RETRY = 57695
View Source
const RETURNING = 57694
View Source
const REVISION_HISTORY = 57696
View Source
const REVOKE = 57697
View Source
const RIGHT = 57698
View Source
const ROLE = 57699
View Source
const ROLES = 57700
View Source
const ROLLBACK = 57701
View Source
const ROLLUP = 57702
View Source
const ROW = 57703
View Source
const ROWS = 57704
View Source
const RSHIFT = 57705
View Source
const RULE = 57706
View Source
const SAVEPOINT = 57707
View Source
const SCATTER = 57708
View Source
const SCHEDULE = 57709
View Source
const SCHEMA = 57710
View Source
const SCHEMAS = 57711
View Source
const SCONST = 57347
View Source
const SCRUB = 57712
View Source
const SEARCH = 57713
View Source
const SECOND = 57714
View Source
const SELECT = 57715
View Source
const SEQUENCE = 57716
View Source
const SEQUENCES = 57717
View Source
const SERIALIZABLE = 57718
View Source
const SERVER = 57719
View Source
const SESSION = 57720
View Source
const SESSIONS = 57721
View Source
const SESSION_USER = 57722
View Source
const SET = 57723
View Source
const SETTING = 57724
View Source
const SETTINGS = 57725
View Source
const SHARE = 57726
View Source
const SHOW = 57727
View Source
const SIMILAR = 57728
View Source
const SIMPLE = 57729
View Source
const SKIP = 57730
View Source
const SMALLINT = 57731
View Source
const SMALLSERIAL = 57732
View Source
const SNAPSHOT = 57733
View Source
const SOME = 57734
View Source
const SPLIT = 57735
View Source
const SQL = 57736
View Source
const SQRT = 57751
View Source
const START = 57737
View Source
const STATISTICS = 57738
View Source
const STATUS = 57739
View Source
const STDIN = 57740
View Source
const STORAGE = 57743
View Source
const STORE = 57744
View Source
const STORED = 57745
View Source
const STORING = 57746
View Source
const STRICT = 57741
View Source
const STRING = 57742
View Source
const SUBSCRIPTION = 57752
View Source
const SUBSTRING = 57747
View Source
const SYMMETRIC = 57748
View Source
const SYNTAX = 57749
View Source
const SYSTEM = 57750
View Source
const TABLE = 57753
View Source
const TABLES = 57754
View Source
const TEMP = 57755
View Source
const TEMPLATE = 57756
View Source
const TEMPORARY = 57757
View Source
const TENANT = 57758
View Source
const TESTING_RELOCATE = 57759
View Source
const TEXT = 57761
View Source
const THEN = 57762
View Source
const THROTTLING = 57769
View Source
const TIES = 57763
View Source
const TIME = 57764
View Source
const TIMESTAMP = 57766
View Source
const TIMESTAMPTZ = 57767
View Source
const TIMETZ = 57765
View Source
const TO = 57768
View Source
const TRACE = 57771
View Source
const TRACING = 57780
View Source
const TRAILING = 57770
View Source
const TRANSACTION = 57772
View Source
const TREAT = 57773
View Source
const TRIGGER = 57774
View Source
const TRIM = 57775
View Source
const TRUE = 57776
View Source
const TRUNCATE = 57777
View Source
const TRUSTED = 57778
View Source
const TYPE = 57779
View Source
const TYPEANNOTATE = 57354
View Source
const TYPECAST = 57353
View Source
const UMINUS = 57822
View Source
const UNBOUNDED = 57781
View Source
const UNCOMMITTED = 57782
View Source
const UNION = 57783
View Source
const UNIQUE = 57784
View Source
const UNKNOWN = 57785
View Source
const UNLOGGED = 57786
View Source
const UNSPLIT = 57787
View Source
const UNTIL = 57790
View Source
const UPDATE = 57788
View Source
const UPSERT = 57789
View Source
const USE = 57791
View Source
const USER = 57792
View Source
const USERS = 57793
View Source
const USING = 57794
View Source
const UUID = 57795
View Source
const VALID = 57796
View Source
const VALIDATE = 57797
View Source
const VALUE = 57798
View Source
const VALUES = 57799
View Source
const VARBIT = 57800
View Source
const VARCHAR = 57801
View Source
const VARIADIC = 57802
View Source
const VARYING = 57804
View Source
const VIEW = 57803
View Source
const VIRTUAL = 57805
View Source
const WHEN = 57806
View Source
const WHERE = 57807
View Source
const WINDOW = 57808
View Source
const WITH = 57809
View Source
const WITHIN = 57810
View Source
const WITHOUT = 57811
View Source
const WITH_LA = 57817
View Source
const WORK = 57812
View Source
const WRITE = 57813
View Source
const YEAR = 57814
View Source
const ZONE = 57815

Variables

View Source
var AllowedExperimental = map[string]struct{}{
	"ranges": {},
}

AllowedExperimental contains keywords for which the EXPERIMENTAL_ or TESTING_ prefixes are allowed to be parsed along with the keyword to the same token. This ambiguity exists during the deprecation period of an EXPERIMENTAL_ keyword as it is being transitioned to the normal version. Once the transition is done, the keyword should be removed from here as well.

View Source
var KeywordNames = []string{}/* 418 elements not displayed */

KeywordNames contains all keywords sorted, so that pg_get_keywords returns deterministic results.

View Source
var KeywordsCategories = map[string]string{}/* 418 elements not displayed */

Functions

func DecodeRawBytesToByteArray

func DecodeRawBytesToByteArray(data string, be BytesEncodeFormat) ([]byte, error)

DecodeRawBytesToByteArray converts raw bytes to a SQL-level byte array according to the encoding specification in "be". When using the Hex format, the caller is responsible for skipping the "\x" prefix, if any. See DecodeRawBytesToByteArrayAuto() below for an alternative.

func DecodeRawBytesToByteArrayAuto

func DecodeRawBytesToByteArrayAuto(data []byte) ([]byte, error)

DecodeRawBytesToByteArrayAuto detects which format to use with DecodeRawBytesToByteArray(). It only supports hex ("\x" prefix) and escape.

func EncodeByteArrayToRawBytes

func EncodeByteArrayToRawBytes(data string, be BytesEncodeFormat, skipHexPrefix bool) string

EncodeByteArrayToRawBytes converts a SQL-level byte array into raw bytes according to the encoding specification in "be". If the skipHexPrefix argument is set, the hexadecimal encoding does not prefix the output with "\x". This is suitable e.g. for the encode() built-in.

func EncodeEscapedSQLIdent

func EncodeEscapedSQLIdent(buf *bytes.Buffer, s string)

EncodeEscapedSQLIdent writes the identifier in s to buf. The identifier is always quoted. Double quotes inside the identifier are escaped.

func EncodeLocaleName

func EncodeLocaleName(buf *bytes.Buffer, s string)

EncodeLocaleName writes the locale identifier in s to buf. Any dash characters are mapped to underscore characters. Underscore characters do not need to be quoted, and they are considered equivalent to dash characters by the CLDR standard: http://cldr.unicode.org/.

func EncodeRestrictedSQLIdent

func EncodeRestrictedSQLIdent(buf *bytes.Buffer, s string, flags EncodeFlags)

EncodeRestrictedSQLIdent writes the identifier in s to buf. The identifier is quoted if either the flags ask for it, the identifier contains special characters, or the identifier is a reserved SQL keyword.

func EncodeSQLBytes

func EncodeSQLBytes(buf *bytes.Buffer, in string)

EncodeSQLBytes encodes the SQL byte array in 'in' to buf, to a format suitable for re-scanning. We don't use a straightforward hex encoding here with x'...' because the result would be less compact. We are trading a little more time during the encoding to have a little less bytes on the wire.

func EncodeSQLString

func EncodeSQLString(buf *bytes.Buffer, in string)

EncodeSQLString writes a string literal to buf. All unicode and non-printable characters are escaped.

func EncodeSQLStringWithFlags

func EncodeSQLStringWithFlags(buf *bytes.Buffer, in string, flags EncodeFlags)

EncodeSQLStringWithFlags writes a string literal to buf. All unicode and non-printable characters are escaped. flags controls the output format: if encodeBareString is set, the output string will not be wrapped in quotes if the strings contains no special characters.

func EncodeUnrestrictedSQLIdent

func EncodeUnrestrictedSQLIdent(buf *bytes.Buffer, s string, flags EncodeFlags)

EncodeUnrestrictedSQLIdent writes the identifier in s to buf. The identifier is only quoted if the flags don't tell otherwise and the identifier contains special characters.

func EscapeSQLString

func EscapeSQLString(in string) string

EscapeSQLString returns an escaped SQL representation of the given string. This is suitable for safely producing a SQL string valid for input to the parser.

func GetKeywordID

func GetKeywordID(k string) int32

GetKeywordID returns the lex id of the SQL keyword k or IDENT if k is not a keyword.

func IsDigit

func IsDigit(ch int) bool

IsDigit returns true if the character is between 0 and 9.

func IsHexDigit

func IsHexDigit(ch int) bool

IsHexDigit returns true if the character is a valid hexadecimal digit.

func IsIdentMiddle

func IsIdentMiddle(ch int) bool

IsIdentMiddle returns true if the character is valid inside an identifier.

func IsIdentStart

func IsIdentStart(ch int) bool

IsIdentStart returns true if the character is valid at the start of an identifier.

func NormalizeName

func NormalizeName(n string) string

NormalizeName normalizes to lowercase and Unicode Normalization Form C (NFC).

Types

type BytesEncodeFormat

type BytesEncodeFormat int

BytesEncodeFormat controls which format to use for BYTES->STRING conversions.

const (
	// BytesEncodeHex uses the hex format: e'abc\n'::BYTES::STRING -> '\x61626312'.
	// This is the default, for compatibility with PostgreSQL.
	BytesEncodeHex BytesEncodeFormat = iota
	// BytesEncodeEscape uses the escaped format: e'abc\n'::BYTES::STRING -> 'abc\012'.
	BytesEncodeEscape
	// BytesEncodeBase64 uses base64 encoding.
	BytesEncodeBase64
)

func BytesEncodeFormatFromString

func BytesEncodeFormatFromString(val string) (_ BytesEncodeFormat, ok bool)

BytesEncodeFormatFromString converts a string into a BytesEncodeFormat.

func (BytesEncodeFormat) String

func (f BytesEncodeFormat) String() string

type EncodeFlags

type EncodeFlags int

EncodeFlags influence the formatting of strings and identifiers.

const (
	// EncNoFlags indicates nothing special should happen while encoding.
	EncNoFlags EncodeFlags = 0

	// EncBareStrings indicates that strings will be rendered without
	// wrapping quotes if they contain no special characters.
	EncBareStrings EncodeFlags = 1 << iota

	// EncBareIdentifiers indicates that identifiers will be rendered
	// without wrapping quotes.
	EncBareIdentifiers

	// EncFirstFreeFlagBit needs to remain unused; it is used as base
	// bit offset for ast.FmtFlags.
	EncFirstFreeFlagBit
)

func (EncodeFlags) HasFlags

func (f EncodeFlags) HasFlags(subset EncodeFlags) bool

HasFlags tests whether the given flags are set.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL