Go: add soft fingerprint framework (#17837)

Signed-off-by: Jin Hai <haijin.chn@gmail.com>
This commit is contained in:
Jin Hai
2026-08-05 13:54:09 +08:00
committed by GitHub
parent f057544e31
commit 1e78789448
8 changed files with 191 additions and 0 deletions

View File

@@ -408,6 +408,8 @@ func (p *Parser) parseAdminShowCommands() (*Command, error) {
return p.parseAdminShowCurrent()
case TokenFingerprint:
return p.parseAdminShowFingerprint()
case TokenSoft:
return p.parseAdminShowSoftFingerprint()
case TokenLicense:
return p.parseAdminShowLicense()
case TokenProvider:
@@ -736,6 +738,23 @@ func (p *Parser) parseAdminShowFingerprint() (*Command, error) {
return NewCommand("admin_show_fingerprint"), nil
}
// SHOW SOFT FINGERPRINT;
func (p *Parser) parseAdminShowSoftFingerprint() (*Command, error) {
p.nextToken() // consume SOFT
if p.curToken.Type != TokenFingerprint {
return nil, fmt.Errorf("expected FINGERPRINT")
}
p.nextToken()
// Semicolon is optional
if p.curToken.Type == TokenSemicolon {
p.nextToken()
}
return NewCommand("admin_show_soft_fingerprint"), nil
}
// SHOW LICENSE;
func (p *Parser) parseAdminShowLicense() (*Command, error) {
p.nextToken() // consume LICENSE
@@ -1836,6 +1855,8 @@ func (p *Parser) parseAdminSetCommand() (*Command, error) {
switch p.curToken.Type {
case TokenLicense:
return p.parseAdminSetLicense()
case TokenSoft:
return p.parseAdminSetSoftFingerprint()
case TokenVar:
return p.parseAdminSetVariable()
case TokenRole:
@@ -1885,6 +1906,30 @@ func (p *Parser) parseAdminSetLicense() (*Command, error) {
return cmd, nil
}
func (p *Parser) parseAdminSetSoftFingerprint() (*Command, error) {
p.nextToken() // consume SOFT
if p.curToken.Type != TokenFingerprint {
return nil, fmt.Errorf("expected FINGERPRINT")
}
p.nextToken()
softFingerprint, err := p.parseQuotedString()
if err != nil {
return nil, err
}
p.nextToken()
cmd := NewCommand("admin_set_soft_fingerprint")
cmd.Params["soft_fingerprint"] = softFingerprint
// Semicolon is optional
if p.curToken.Type == TokenSemicolon {
p.nextToken()
}
return cmd, nil
}
func (p *Parser) parseAdminSetVariable() (*Command, error) {
p.nextToken() // consume VAR
@@ -2280,6 +2325,8 @@ func (p *Parser) parseAdminDeleteCommands() (*Command, error) {
return p.parseAPIDeleteAdminServer()
case TokenProvider:
return p.parseAdminDeleteProvider()
case TokenSoft:
return p.parseAdminDeleteSoftFingerprint()
default:
return nil, fmt.Errorf("unknown ADD target: %s", p.curToken.Value)
}
@@ -2359,6 +2406,25 @@ func (p *Parser) parseAdminDeleteModel(providerName, instanceName string) (*Comm
return cmd, nil
}
// syntax: delete soft fingerprint;
func (p *Parser) parseAdminDeleteSoftFingerprint() (*Command, error) {
p.nextToken() // consume SOFT
if p.curToken.Type != TokenFingerprint {
return nil, fmt.Errorf("expected FINGERPRINT after SOFT")
}
p.nextToken()
cmd := NewCommand("admin_delete_soft_fingerprint")
// Semicolon is optional
if p.curToken.Type == TokenSemicolon {
p.nextToken()
}
return cmd, nil
}
func (p *Parser) parseAdminEnableCommand() (*Command, error) {
p.nextToken() // consume ENABLE
switch p.curToken.Type {