@@ -93,6 +93,69 @@ public function compileAdd(Blueprint $blueprint, Fluent $command)
93
93
return 'ALTER TABLE ' . $ table . ' ADD ' . implode (', ' , $ columns );
94
94
}
95
95
96
+
97
+ /**
98
+ * @param $table
99
+ * @return string
100
+ * Functions do compile the columns of a given table
101
+ */
102
+ public function compileColumns ($ table )
103
+ {
104
+ return "SELECT
105
+ col.name,
106
+ type.name AS type_name,
107
+ col.length AS length,
108
+ col.prec AS precision,
109
+ col.scale AS places,
110
+ CASE WHEN (col.status & 0x08) = 0x08 THEN 'YES' ELSE 'NO' END AS nullable,
111
+ def.text AS [default],
112
+ CASE WHEN (col.status & 0x80) = 0x80 THEN 'YES' ELSE 'NO' END AS autoincrement,
113
+ NULL AS collation, -- Sybase não fornece suporte direto para collation em colunas
114
+ com.text AS comment -- Comentários associados à coluna, se existirem
115
+ FROM
116
+ sysobjects obj
117
+ JOIN
118
+ syscolumns col ON obj.id = col.id
119
+ JOIN
120
+ systypes type ON col.usertype = type.usertype
121
+ LEFT JOIN
122
+ syscomments def ON col.cdefault = def.id -- Valores padrão da coluna
123
+ LEFT JOIN
124
+ syscomments com ON col.colid = com.colid -- Comentários associados às colunas (se habilitados)
125
+ WHERE
126
+ obj.type IN ('U', 'V') -- 'U' para tabelas, 'V' para visões
127
+ AND obj.name = ' $ table'
128
+ AND user_name(obj.uid) = user_name()
129
+ ORDER BY
130
+ col.colid " ;
131
+ }
132
+
133
+ /**
134
+ * @param $table
135
+ * @return string
136
+ * Functions that return the indexes of a given table
137
+ */
138
+ public function compileIndexes ($ table )
139
+ {
140
+ return "SELECT
141
+ DISTINCT i.name,
142
+ index_col(o.name, i.indid, c.colid) AS column_name,
143
+ CASE WHEN i.status & 2048 = 2048 THEN 'YES' ELSE 'NO' END AS is_primary,
144
+ CASE WHEN i.status & 2 = 2 THEN 'YES' ELSE 'NO' END AS is_unique
145
+ FROM
146
+ sysobjects o
147
+ INNER JOIN sysindexes i ON i.id = o.id
148
+ INNER JOIN syscolumns c ON c.id = o.id
149
+ WHERE
150
+ o.type = 'U' -- Apenas tabelas de usuário
151
+ AND o.name = ' $ table' -- Nome da tabela alvo
152
+ AND i.indid > 0 -- Índices não-triviais
153
+ AND i.status & 2 = 2 -- Apenas índices do sistema (ajuste se necessário)
154
+ AND index_col(o.name, i.indid, c.colid) IS NOT NULL -- Verifica colunas válidas associadas ao índice
155
+ ORDER BY
156
+ i.name, column_name " ;
157
+ }
158
+
96
159
/**
97
160
* Compile a primary key command.
98
161
*
0 commit comments