Nicolas,

I had not thought about this case. I think your suggestion is nice; we can
use this approach.

Best regards,
Daniel Salvador (gutoveronezi)

On Tue, Feb 7, 2023 at 9:45 AM Nicolas Vazquez <
nicolas.vazq...@shapeblue.com> wrote:

> Thanks Daniel, that approach looks nice to me.
>
> How would it work in case a view needs to be removed? I would think we can
> remove the file from the views directory and add the drop view SQL on the
> schema file.
>
> Regards,
> Nicolas Vazquez
> ________________________________
> From: Daniel Augusto Veronezi Salvador <dvsalvador...@gmail.com>
> Sent: Monday, February 6, 2023 9:43 PM
> To: dev@cloudstack.apache.org <dev@cloudstack.apache.org>
> Subject: [DISCUSSION] Management of the database's "VIEW"s
>
> Hello guys,
>
> I would like to open a discussion on our current management of the
> database's "VIEW"s.
>
> Currently, we have to look at the changes in the previous "schema" files
> and replicate the whole "CREATE VIEW" command in the current "schema" file,
> modifying what we need (adding/removing columns, and so on). This process
> makes the changes in a "VIEW" to be distributed through several files,
> increasing the number of lines modified for simple changes (e.g.: for
> adding a single field to the "VIEW" result we need to replicate the whole
> command); thus, making it difficult to maintain and track.
>
> With that in mind, I had some ideas of how we can improve this process.
> The proposal is: instead of adding the changes to the current "schema"
> file, we create unique files for each "VIEW" and manage them; more detailed:
> 1. under the directory "db", where the "schema" files are, we would create
> a sub-directory called "views";
> 2. in the sub-directory "views", we would create a file for each "VIEW",
> named with the "VIEW" name (for instance,
> "cloud.network_offering_view.sql");
> 3. in the "VIEW" file, we would put the "DROP VIEW" command, followed by
> the "CREATE VIEW" command, just as we do in the "schema" file; for
> instance, the content of file "cloud.network_offering_view.sql" would be:
>
> ```
> DROP VIEW IF EXISTS `cloud`.`network_offering_view`;
>
> CREATE VIEW `cloud`.`network_offering_view` AS
>      SELECT
>          `network_offerings`.`id` AS `id`,
>          `network_offerings`.`uuid` AS `uuid`,
>          `network_offerings`.`name` AS `name`,
>      <the rest of the CREATE VIEW command>
> ```
>
> 4. then, after each version upgrade, in Java we execute all the files in
> the sub-directory "views"; this way, if a "VIEW" changed, it would be
> recreated with the new changes; otherwise, it would be only recreated as is;
>
> That would allow us to easily track "VIEW" modifications, as we would just
> change the "VIEW" declaration in the same file, instead of re-declaring the
> whole "VIEW" in a different file; and we would have a better history of the
> changes. Also, we would not need to migrate all "VIEW"s right away; we
> could migrate as we change them.
>
> Please, let me know your thoughts about the proposal.
>
> Best regards,
> Daniel Salvador (gutoveronezi)
>
>
>
>

Reply via email to