package oci8 import ( "strings" "sync" ) var setupReserved sync.Once var reservedWords map[string]struct{} func isReserved(w string) bool { setupReserved.Do( func() { words := strings.Split(reserved, "\n") reservedWords = make(map[string]struct{}, len(words)) for _, s := range words { reservedWords[s] = struct{}{} } }, ) _, ok := reservedWords[strings.ToUpper(w)] return ok } const reserved = `AGGREGATE AGGREGATES ALL ALLOW ANALYZE ANCESTOR AND ANY AS ASC AT AVG BETWEEN BINARY_DOUBLE BINARY_FLOAT BLOB BRANCH BUILD BY BYTE CASE CAST CHAR CHILD CLEAR CLOB COMMIT COMPILE CONSIDER COUNT DATATYPE DATE DATE_MEASURE DAY DECIMAL DELETE DESC DESCENDANT DIMENSION DISALLOW DIVISION DML ELSE END ESCAPE EXECUTE FIRST FLOAT FOR FROM HIERARCHIES HIERARCHY HOUR IGNORE IN INFINITE INSERT INTEGER INTERVAL INTO IS LAST LEAF_DESCENDANT LEAVES LEVEL LIKE LIKEC LIKE2 LIKE4 LOAD LOCAL LOG_SPEC LONG MAINTAIN MAX MEASURE MEASURES MEMBER MEMBERS MERGE MLSLABEL MIN MINUTE MODEL MONTH NAN NCHAR NCLOB NO NONE NOT NULL NULLS NUMBER NVARCHAR2 OF OLAP OLAP_DML_EXPRESSION ON ONLY OPERATOR OR ORDER OVER OVERFLOW PARALLEL PARENT PLSQL PRUNE RAW RELATIVE ROOT_ANCESTOR ROWID SCN SECOND SELF SERIAL SET SOLVE SOME SORT SPEC SUM SYNCH TEXT_MEASURE THEN TIME TIMESTAMP TO UNBRANCH UPDATE USING VALIDATE VALUES VARCHAR2 WHEN WHERE WITHIN WITH YEAR ZERO ZONE`