From 1a2225c0f5f1003801351b3fec9f79f21e904caa Mon Sep 17 00:00:00 2001 From: chrislu Date: Tue, 2 Sep 2025 11:02:08 -0700 Subject: [PATCH] rename to "weed db" --- test/postgres/docker-compose.yml | 4 +- weed/command/command.go | 2 +- weed/command/{postgres.go => db.go} | 120 ++++++++++++++-------------- weed/server/postgres/DESIGN.md | 6 +- weed/server/postgres/README.md | 2 +- 5 files changed, 68 insertions(+), 66 deletions(-) rename weed/command/{postgres.go => db.go} (65%) diff --git a/test/postgres/docker-compose.yml b/test/postgres/docker-compose.yml index abe403de9..021c6d6e1 100644 --- a/test/postgres/docker-compose.yml +++ b/test/postgres/docker-compose.yml @@ -44,7 +44,7 @@ services: retries: 5 start_period: 60s - # PostgreSQL Wire Protocol Server (Custom Build) + # Database Server (PostgreSQL Wire Protocol Compatible) postgres-server: build: context: ../.. # Build from project root @@ -56,7 +56,7 @@ services: seaweedfs: condition: service_healthy command: > - ./weed postgres + ./weed db -host=0.0.0.0 -port=5432 -master=seaweedfs:9333 diff --git a/weed/command/command.go b/weed/command/command.go index 1efaecf9d..b1c8df5b7 100644 --- a/weed/command/command.go +++ b/weed/command/command.go @@ -35,7 +35,7 @@ var Commands = []*Command{ cmdMount, cmdMqAgent, cmdMqBroker, - cmdPostgres, + cmdDB, cmdS3, cmdScaffold, cmdServer, diff --git a/weed/command/postgres.go b/weed/command/db.go similarity index 65% rename from weed/command/postgres.go rename to weed/command/db.go index a05eebea3..58d4984d0 100644 --- a/weed/command/postgres.go +++ b/weed/command/db.go @@ -16,10 +16,10 @@ import ( ) var ( - postgresOptions PostgresOptions + dbOptions DBOptions ) -type PostgresOptions struct { +type DBOptions struct { host *string port *int masterAddr *string @@ -33,47 +33,47 @@ type PostgresOptions struct { } func init() { - cmdPostgres.Run = runPostgres // break init cycle - postgresOptions.host = cmdPostgres.Flag.String("host", "localhost", "PostgreSQL server host") - postgresOptions.port = cmdPostgres.Flag.Int("port", 5432, "PostgreSQL server port") - postgresOptions.masterAddr = cmdPostgres.Flag.String("master", "localhost:9333", "SeaweedFS master server address") - postgresOptions.authMethod = cmdPostgres.Flag.String("auth", "trust", "Authentication method: trust, password, md5") - postgresOptions.users = cmdPostgres.Flag.String("users", "", "User credentials for auth (format: user1:pass1,user2:pass2)") - postgresOptions.database = cmdPostgres.Flag.String("database", "default", "Default database name") - postgresOptions.maxConns = cmdPostgres.Flag.Int("max-connections", 100, "Maximum concurrent connections") - postgresOptions.idleTimeout = cmdPostgres.Flag.String("idle-timeout", "1h", "Connection idle timeout") - postgresOptions.tlsCert = cmdPostgres.Flag.String("tls-cert", "", "TLS certificate file path") - postgresOptions.tlsKey = cmdPostgres.Flag.String("tls-key", "", "TLS private key file path") + cmdDB.Run = runDB // break init cycle + dbOptions.host = cmdDB.Flag.String("host", "localhost", "Database server host") + dbOptions.port = cmdDB.Flag.Int("port", 5432, "Database server port") + dbOptions.masterAddr = cmdDB.Flag.String("master", "localhost:9333", "SeaweedFS master server address") + dbOptions.authMethod = cmdDB.Flag.String("auth", "trust", "Authentication method: trust, password, md5") + dbOptions.users = cmdDB.Flag.String("users", "", "User credentials for auth (format: user1:pass1,user2:pass2)") + dbOptions.database = cmdDB.Flag.String("database", "default", "Default database name") + dbOptions.maxConns = cmdDB.Flag.Int("max-connections", 100, "Maximum concurrent connections") + dbOptions.idleTimeout = cmdDB.Flag.String("idle-timeout", "1h", "Connection idle timeout") + dbOptions.tlsCert = cmdDB.Flag.String("tls-cert", "", "TLS certificate file path") + dbOptions.tlsKey = cmdDB.Flag.String("tls-key", "", "TLS private key file path") } -var cmdPostgres = &Command{ - UsageLine: "postgres -port=5432 -master=", - Short: "start a PostgreSQL-compatible server for SQL queries", - Long: `Start a PostgreSQL wire protocol compatible server that provides SQL query access to SeaweedFS. +var cmdDB = &Command{ + UsageLine: "db -port=5432 -master=", + Short: "start a PostgreSQL-compatible database server for SQL queries", + Long: `Start a PostgreSQL wire protocol compatible database server that provides SQL query access to SeaweedFS. -This PostgreSQL server enables any PostgreSQL client, tool, or application to connect to SeaweedFS +This database server enables any PostgreSQL client, tool, or application to connect to SeaweedFS and execute SQL queries against MQ topics. It implements the PostgreSQL wire protocol for maximum compatibility with the existing PostgreSQL ecosystem. Examples: - # Start PostgreSQL server on default port 5432 - weed postgres + # Start database server on default port 5432 + weed db # Start with password authentication - weed postgres -auth=password -users="admin:secret,readonly:view123" + weed db -auth=password -users="admin:secret,readonly:view123" # Start with MD5 authentication - weed postgres -auth=md5 -users="user1:pass1,user2:pass2" + weed db -auth=md5 -users="user1:pass1,user2:pass2" # Start with custom port and master - weed postgres -port=5433 -master=master1:9333 + weed db -port=5433 -master=master1:9333 # Allow connections from any host - weed postgres -host=0.0.0.0 -port=5432 + weed db -host=0.0.0.0 -port=5432 # Start with TLS encryption - weed postgres -tls-cert=server.crt -tls-key=server.key + weed db -tls-cert=server.crt -tls-key=server.key Client Connection Examples: @@ -112,6 +112,7 @@ Programming Language Examples: Supported SQL Operations: - SELECT queries on MQ topics - DESCRIBE/DESC table_name commands + - EXPLAIN query execution plans - SHOW DATABASES/TABLES commands - Aggregation functions (COUNT, SUM, AVG, MIN, MAX) - WHERE clauses with filtering @@ -151,32 +152,32 @@ Performance Features: `, } -func runPostgres(cmd *Command, args []string) bool { +func runDB(cmd *Command, args []string) bool { util.LoadConfiguration("security", false) // Validate options - if *postgresOptions.masterAddr == "" { + if *dbOptions.masterAddr == "" { fmt.Fprintf(os.Stderr, "Error: master address is required\n") return false } // Parse authentication method - authMethod, err := parseAuthMethod(*postgresOptions.authMethod) + authMethod, err := parseAuthMethod(*dbOptions.authMethod) if err != nil { fmt.Fprintf(os.Stderr, "Error: %v\n", err) return false } // Parse user credentials - users, err := parseUsers(*postgresOptions.users, authMethod) + users, err := parseUsers(*dbOptions.users, authMethod) if err != nil { fmt.Fprintf(os.Stderr, "Error: %v\n", err) return false } // Parse idle timeout - idleTimeout, err := time.ParseDuration(*postgresOptions.idleTimeout) + idleTimeout, err := time.ParseDuration(*dbOptions.idleTimeout) if err != nil { fmt.Fprintf(os.Stderr, "Error parsing idle timeout: %v\n", err) return false @@ -184,8 +185,8 @@ func runPostgres(cmd *Command, args []string) bool { // Setup TLS if requested var tlsConfig *tls.Config - if *postgresOptions.tlsCert != "" && *postgresOptions.tlsKey != "" { - cert, err := tls.LoadX509KeyPair(*postgresOptions.tlsCert, *postgresOptions.tlsKey) + if *dbOptions.tlsCert != "" && *dbOptions.tlsKey != "" { + cert, err := tls.LoadX509KeyPair(*dbOptions.tlsCert, *dbOptions.tlsKey) if err != nil { fmt.Fprintf(os.Stderr, "Error loading TLS certificates: %v\n", err) return false @@ -197,32 +198,32 @@ func runPostgres(cmd *Command, args []string) bool { // Create server configuration config := &postgres.PostgreSQLServerConfig{ - Host: *postgresOptions.host, - Port: *postgresOptions.port, + Host: *dbOptions.host, + Port: *dbOptions.port, AuthMethod: authMethod, Users: users, - Database: *postgresOptions.database, - MaxConns: *postgresOptions.maxConns, + Database: *dbOptions.database, + MaxConns: *dbOptions.maxConns, IdleTimeout: idleTimeout, TLSConfig: tlsConfig, } - // Create PostgreSQL server - postgresServer, err := postgres.NewPostgreSQLServer(config, *postgresOptions.masterAddr) + // Create database server + dbServer, err := postgres.NewPostgreSQLServer(config, *dbOptions.masterAddr) if err != nil { - fmt.Fprintf(os.Stderr, "Error creating PostgreSQL server: %v\n", err) + fmt.Fprintf(os.Stderr, "Error creating database server: %v\n", err) return false } // Print startup information - fmt.Printf("Starting SeaweedFS PostgreSQL Server...\n") - fmt.Printf("Host: %s\n", *postgresOptions.host) - fmt.Printf("Port: %d\n", *postgresOptions.port) - fmt.Printf("Master: %s\n", *postgresOptions.masterAddr) - fmt.Printf("Database: %s\n", *postgresOptions.database) - fmt.Printf("Auth Method: %s\n", *postgresOptions.authMethod) - fmt.Printf("Max Connections: %d\n", *postgresOptions.maxConns) - fmt.Printf("Idle Timeout: %s\n", *postgresOptions.idleTimeout) + fmt.Printf("Starting SeaweedFS Database Server...\n") + fmt.Printf("Host: %s\n", *dbOptions.host) + fmt.Printf("Port: %d\n", *dbOptions.port) + fmt.Printf("Master: %s\n", *dbOptions.masterAddr) + fmt.Printf("Database: %s\n", *dbOptions.database) + fmt.Printf("Auth Method: %s\n", *dbOptions.authMethod) + fmt.Printf("Max Connections: %d\n", *dbOptions.maxConns) + fmt.Printf("Idle Timeout: %s\n", *dbOptions.idleTimeout) if tlsConfig != nil { fmt.Printf("TLS: Enabled\n") } else { @@ -232,31 +233,32 @@ func runPostgres(cmd *Command, args []string) bool { fmt.Printf("Users: %d configured\n", len(users)) } - fmt.Printf("\nPostgreSQL Connection Examples:\n") - fmt.Printf(" psql -h %s -p %d -U seaweedfs -d %s\n", *postgresOptions.host, *postgresOptions.port, *postgresOptions.database) + fmt.Printf("\nDatabase Connection Examples:\n") + fmt.Printf(" psql -h %s -p %d -U seaweedfs -d %s\n", *dbOptions.host, *dbOptions.port, *dbOptions.database) if len(users) > 0 { // Show first user as example for username := range users { - fmt.Printf(" psql -h %s -p %d -U %s -d %s\n", *postgresOptions.host, *postgresOptions.port, username, *postgresOptions.database) + fmt.Printf(" psql -h %s -p %d -U %s -d %s\n", *dbOptions.host, *dbOptions.port, username, *dbOptions.database) break } } - fmt.Printf(" postgresql://%s:%d/%s\n", *postgresOptions.host, *postgresOptions.port, *postgresOptions.database) + fmt.Printf(" postgresql://%s:%d/%s\n", *dbOptions.host, *dbOptions.port, *dbOptions.database) fmt.Printf("\nSupported Operations:\n") fmt.Printf(" - SELECT queries on MQ topics\n") fmt.Printf(" - DESCRIBE/DESC table_name\n") + fmt.Printf(" - EXPLAIN query execution plans\n") fmt.Printf(" - SHOW DATABASES/TABLES\n") fmt.Printf(" - Aggregations: COUNT, SUM, AVG, MIN, MAX\n") fmt.Printf(" - System columns: _timestamp_ns, _key, _source\n") fmt.Printf(" - psql commands: \\d, \\dt, \\l, \\q\n") - fmt.Printf("\nReady for PostgreSQL connections!\n\n") + fmt.Printf("\nReady for database connections!\n\n") // Start the server - err = postgresServer.Start() + err = dbServer.Start() if err != nil { - fmt.Fprintf(os.Stderr, "Error starting PostgreSQL server: %v\n", err) + fmt.Fprintf(os.Stderr, "Error starting database server: %v\n", err) return false } @@ -266,7 +268,7 @@ func runPostgres(cmd *Command, args []string) bool { // Wait for shutdown signal <-sigChan - fmt.Printf("\nReceived shutdown signal, stopping PostgreSQL server...\n") + fmt.Printf("\nReceived shutdown signal, stopping database server...\n") // Create context with timeout for graceful shutdown ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) @@ -275,18 +277,18 @@ func runPostgres(cmd *Command, args []string) bool { // Stop the server with timeout done := make(chan error, 1) go func() { - done <- postgresServer.Stop() + done <- dbServer.Stop() }() select { case err := <-done: if err != nil { - fmt.Fprintf(os.Stderr, "Error stopping PostgreSQL server: %v\n", err) + fmt.Fprintf(os.Stderr, "Error stopping database server: %v\n", err) return false } - fmt.Printf("PostgreSQL server stopped successfully\n") + fmt.Printf("Database server stopped successfully\n") case <-ctx.Done(): - fmt.Fprintf(os.Stderr, "Timeout waiting for PostgreSQL server to stop\n") + fmt.Fprintf(os.Stderr, "Timeout waiting for database server to stop\n") return false } diff --git a/weed/server/postgres/DESIGN.md b/weed/server/postgres/DESIGN.md index 806ccf445..20a89be6d 100644 --- a/weed/server/postgres/DESIGN.md +++ b/weed/server/postgres/DESIGN.md @@ -296,9 +296,9 @@ jdbc:postgresql://localhost:5432/default?user=seaweedfs&password=secret ```bash # Start PostgreSQL protocol server -weed postgres -port=5432 -auth=trust -weed postgres -port=5432 -auth=password -users="admin:secret,readonly:pass" -weed postgres -port=5432 -tls-cert=server.crt -tls-key=server.key +weed db -port=5432 -auth=trust +weed db -port=5432 -auth=password -users="admin:secret,readonly:pass" +weed db -port=5432 -tls-cert=server.crt -tls-key=server.key # Configuration options -host=localhost # Listen host diff --git a/weed/server/postgres/README.md b/weed/server/postgres/README.md index 212557f65..bb0c6516f 100644 --- a/weed/server/postgres/README.md +++ b/weed/server/postgres/README.md @@ -231,7 +231,7 @@ psql -h localhost -p 5432 -U seaweedfs -d default - **DESIGN.md**: Complete architecture and design overview - **IMPLEMENTATION.md**: Detailed implementation guide - **postgres-examples/**: Client examples and test scripts -- **Command Documentation**: `weed postgres -help` +- **Command Documentation**: `weed db -help` ## Security Considerations